中文编码
不同的编码格式占字节数是不同的,UTF-8编码下一个中文所占字节也是不确定的,可能是2个、3个、4个字节;
@Test public void test1() throws UnsupportedEncodingException { String a = "名"; System.out.println("UTF-8编码长度:"+a.getBytes("UTF-8").length); System.out.println("GBK编码长度:"+a.getBytes("GBK").length); System.out.println("GB2312编码长度:"+a.getBytes("GB2312").length); System.out.println("=========================================="); String c = "0x20001"; System.out.println("UTF-8编码长度:"+c.getBytes("UTF-8").length); System.out.println("GBK编码长度:"+c.getBytes("GBK").length); System.out.println("GB2312编码长度:"+c.getBytes("GB2312").length); System.out.println("=========================================="); char[] arr = Character.toChars(0x20001); String s = new String(arr); System.out.println("char array length:" + arr.length); System.out.println("content:| " + s + " |"); System.out.println("String length:" + s.length()); System.out.println("UTF-8编码长度:"+s.getBytes("UTF-8").length); System.out.println("GBK编码长度:"+s.getBytes("GBK").length); System.out.println("GB2312编码长度:"+s.getBytes("GB2312").length); System.out.println("=========================================="); }
UTF-8编码长度:3 GBK编码长度:2 GB2312编码长度:2 ========================================== UTF-8编码长度:4 GBK编码长度:1 GB2312编码长度:1 ========================================== char array length:2 content:| 𠀁 | String length:2 UTF-8编码长度:4 GBK编码长度:1 GB2312编码长度:1 ==========================================
在Windows平台下,进入DOS窗口,输入:chcp
可以得到操作系统的代码页信息,你可以从控制面板的语言选项中查看代码页对应的详细的字符集信息。
例如:
我的活动代码页为:936,它对于的编码格式为GBK。
代码页是字符集编码的别名,也有人称"内码表"。早期,代码页是IBM称呼电脑BIOS本身支持的字符集编码的名称。当时通用的操作系统都是命令行界面系统,这些操作系统直接使用BIOS供应的VGA功能来显示字符,操作系统的编码支持也就依靠BIOS的编码。现在这BIOS代码页被称为OEM代码页。图形操作系统解决了此问题,图形操作系统使用自己字符呈现引擎可以支持很多不同的字符集编码。