字符集 | 说明 |
---|---|
US-ASCII | 即英文的ASCII |
ISO-8859-1 | Latin-1 拉丁字符,包含中文、日文等 |
UTF-8 | 变长unicode字符(1-3个字符),国际通用 |
UTF-16BE | 定长unicode字符(2个字符),大端Big-endian表示 |
UTF-16LE | 定长unicode字符(2个字符),小端little-endian表示 |
UTF-16 | 文件中开头指定大端还是小端表示方式,即BOM(Byte-Order-Mark) : FE FF 表示大端,FF FE 表示小端 |
编码(字符串->字节)
String msg = "哈哈哈哈哈";
//编码:字节数组
byte[] datas = msg.getBytes();//默认使用工程的字符集
System.out.println(datas.length);//输出字节长度
换其他字符集
String msg = "哈哈哈哈哈";
//编码:字节数组
byte[] datas = msg.getBytes("UTF-16LE");//换用UTF-16LE字符集编码
System.out.println(datas.length);//输出字节长度
解码(字节->字符串)
String msg = "哈哈哈哈哈";
//编码:字节数组
byte[] datas = msg.getBytes("UTF-16LE");//换用UTF-16LE字符集编码
System.out.println(datas);
//使用UTF-16LE字符集解码
msg = new String(datas,0, datas.length, "UTF-16LE");
System.out.println(msg);
乱码原因
- 字节数不够
2)字符集不统一