字符编码
查看支持哪些字符编码:
package com.nio; import java.nio.charset.Charset; import java.util.Map; import java.util.Set; import java.util.SortedMap; /** * 字符集:charset * 编码:字符串->字节数组 * 解码:字节数组->字符串 */ public class TestCharset { public static void main(String[] args) { //查看Charset支持的字符编码 SortedMap<String, Charset> map = Charset.availableCharsets(); Set<Map.Entry<String, Charset>> entries = map.entrySet(); for (Map.Entry<String, Charset> entry : entries) { System.out.println(entry.getKey()+ "=" +entry.getValue()); } } } |
运行结果:
Big5=Big5 Big5-HKSCS=Big5-HKSCS CESU- 8 =CESU- 8 EUC-JP=EUC-JP EUC-KR=EUC-KR GB18030=GB18030 GB2312=GB2312 GBK=GBK IBM-Thai=IBM-Thai IBM00858=IBM00858 IBM01140=IBM01140 IBM01141=IBM01141 IBM01142=IBM01142 IBM01143=IBM01143 IBM01144=IBM01144 IBM01145=IBM01145 IBM01146=IBM01146 IBM01147=IBM01147 IBM01148=IBM01148 IBM01149=IBM01149 IBM037=IBM037 IBM1026=IBM1026 IBM1047=IBM1047 IBM273=IBM273 IBM277=IBM277 IBM278=IBM278 IBM280=IBM280 IBM284=IBM284 IBM285=IBM285 IBM290=IBM290 IBM297=IBM297 IBM420=IBM420 IBM424=IBM424 IBM437=IBM437 IBM500=IBM500 IBM775=IBM775 IBM850=IBM850 IBM852=IBM852 IBM855=IBM855 IBM857=IBM857 IBM860=IBM860 IBM861=IBM861 IBM862=IBM862 IBM863=IBM863 IBM864=IBM864 IBM865=IBM865 IBM866=IBM866 IBM868=IBM868 IBM869=IBM869 IBM870=IBM870 IBM871=IBM871 IBM918=IBM918 ISO- 2022 -CN=ISO- 2022 -CN ISO- 2022 -JP=ISO- 2022 -JP ISO- 2022 -JP- 2 =ISO- 2022 -JP- 2 ISO- 2022 -KR=ISO- 2022 -KR ISO- 8859 - 1 =ISO- 8859 - 1 ISO- 8859 - 13 =ISO- 8859 - 13 ISO- 8859 - 15 =ISO- 8859 - 15 ISO- 8859 - 2 =ISO- 8859 - 2 ISO- 8859 - 3 =ISO- 8859 - 3 ISO- 8859 - 4 =ISO- 8859 - 4 ISO- 8859 - 5 =ISO- 8859 - 5 ISO- 8859 - 6 =ISO- 8859 - 6 ISO- 8859 - 7 =ISO- 8859 - 7 ISO- 8859 - 8 =ISO- 8859 - 8 ISO- 8859 - 9 =ISO- 8859 - 9 JIS_X0201=JIS_X0201 JIS_X0212- 1990 =JIS_X0212- 1990 KOI8-R=KOI8-R KOI8-U=KOI8-U Shift_JIS=Shift_JIS TIS- 620 =TIS- 620 US-ASCII=US-ASCII UTF- 16 =UTF- 16 UTF-16BE=UTF-16BE UTF-16LE=UTF-16LE UTF- 32 =UTF- 32 UTF-32BE=UTF-32BE UTF-32LE=UTF-32LE UTF- 8 =UTF- 8 windows- 1250 =windows- 1250 windows- 1251 =windows- 1251 windows- 1252 =windows- 1252 windows- 1253 =windows- 1253 windows- 1254 =windows- 1254 windows- 1255 =windows- 1255 windows- 1256 =windows- 1256 windows- 1257 =windows- 1257 windows- 1258 =windows- 1258 windows-31j=windows-31j x-Big5-HKSCS- 2001 =x-Big5-HKSCS- 2001 x-Big5-Solaris=x-Big5-Solaris x-euc-jp-linux=x-euc-jp-linux x-EUC-TW=x-EUC-TW x-eucJP-Open=x-eucJP-Open x-IBM1006=x-IBM1006 x-IBM1025=x-IBM1025 x-IBM1046=x-IBM1046 x-IBM1097=x-IBM1097 x-IBM1098=x-IBM1098 x-IBM1112=x-IBM1112 x-IBM1122=x-IBM1122 x-IBM1123=x-IBM1123 x-IBM1124=x-IBM1124 x-IBM1166=x-IBM1166 x-IBM1364=x-IBM1364 x-IBM1381=x-IBM1381 x-IBM1383=x-IBM1383 x-IBM300=x-IBM300 x-IBM33722=x-IBM33722 x-IBM737=x-IBM737 x-IBM833=x-IBM833 x-IBM834=x-IBM834 x-IBM856=x-IBM856 x-IBM874=x-IBM874 x-IBM875=x-IBM875 x-IBM921=x-IBM921 x-IBM922=x-IBM922 x-IBM930=x-IBM930 x-IBM933=x-IBM933 x-IBM935=x-IBM935 x-IBM937=x-IBM937 x-IBM939=x-IBM939 x-IBM942=x-IBM942 x-IBM942C=x-IBM942C x-IBM943=x-IBM943 x-IBM943C=x-IBM943C x-IBM948=x-IBM948 x-IBM949=x-IBM949 x-IBM949C=x-IBM949C x-IBM950=x-IBM950 x-IBM964=x-IBM964 x-IBM970=x-IBM970 x-ISCII91=x-ISCII91 x-ISO- 2022 -CN-CNS=x-ISO- 2022 -CN-CNS x-ISO- 2022 -CN-GB=x-ISO- 2022 -CN-GB x-iso- 8859 - 11 =x-iso- 8859 - 11 x-JIS0208=x-JIS0208 x-JISAutoDetect=x-JISAutoDetect x-Johab=x-Johab x-MacArabic=x-MacArabic x-MacCentralEurope=x-MacCentralEurope x-MacCroatian=x-MacCroatian x-MacCyrillic=x-MacCyrillic x-MacDingbat=x-MacDingbat x-MacGreek=x-MacGreek x-MacHebrew=x-MacHebrew x-MacIceland=x-MacIceland x-MacRoman=x-MacRoman x-MacRomania=x-MacRomania x-MacSymbol=x-MacSymbol x-MacThai=x-MacThai x-MacTurkish=x-MacTurkish x-MacUkraine=x-MacUkraine x-MS932_0213=x-MS932_0213 x-MS950-HKSCS=x-MS950-HKSCS x-MS950-HKSCS-XP=x-MS950-HKSCS-XP x-mswin- 936 =x-mswin- 936 x-PCK=x-PCK x-SJIS_0213=x-SJIS_0213 x-UTF-16LE-BOM=x-UTF-16LE-BOM X-UTF-32BE-BOM=X-UTF-32BE-BOM X-UTF-32LE-BOM=X-UTF-32LE-BOM x-windows- 50220 =x-windows- 50220 x-windows- 50221 =x-windows- 50221 x-windows- 874 =x-windows- 874 x-windows- 949 =x-windows- 949 x-windows- 950 =x-windows- 950 x-windows-iso2022jp=x-windows-iso2022jp |
编码解码小案例:
package com.nio; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CharsetEncoder; /** * 字符集 * 编码和解码的小案例 */ public class TestCharsetDemo { public static void main(String[] args) throws CharacterCodingException { Charset cs1 = Charset.forName( "GBK" ); //获取解码器 CharsetEncoder ce = cs1.newEncoder(); //获取解码器 CharsetDecoder cd = cs1.newDecoder(); CharBuffer cBuf = CharBuffer.allocate( 1024 ); cBuf.put( "张家口加油!" ); cBuf.flip(); //编码 ByteBuffer bBuf = ce.encode(cBuf); for ( int i= 0 ;i< 12 ;i++) { System.out.println(bBuf.get()); } //解码 bBuf.flip(); CharBuffer cBuf2 = cd.decode(bBuf); System.out.println(cBuf2.toString()); //解码 使用utf-8进行解码 Charset cs2 = Charset.forName( "UTF-8" ); bBuf.flip(); CharBuffer cBuf3 = cs2.decode(bBuf); System.out.println(cBuf3.toString()); } } |
运行结果:
- 43 - 59 - 68 - 46 - 65 - 38 - 68 - 45 - 45 - 51 - 93 - 95 张家口加油! �żҿڼ��ͣ� |
由此可见,当编码和解码的方式不同的时候,会出现乱码。这在实际项目开发过程中一定要注意。
当客户端向服务端发送一个读写请求的时候,服务端无法判断读写请求中信息真实有效的时候,就会陷入阻塞状态。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-02-19 (十三)MySQL语法-子查询