Java中字符串转换编码
Java中的字符串(String)是使用Unicode编码的,而byte是网络传输或存储的序列化形式。
可以通过调用String的getBytes()方法获得指定编码的byte数组
byte[] getBytes () //使用平台默认的字符集进行编码
byte[] getBytes(String charsetName) //指定字符集进行编码
我们可以通过指定byte数组和字符集的形式生成String对象
String(byte[], String charsetName)
现在考虑一个字符乱码问题:当byte数组中保存的是GBK编码,我们创建String对象的时候,却使用ISO-9959-1解码,那么肯定会产生乱码,于是我们仍然需要得到原来的byte数组,然后,对该byte数组指定正确的编码。代码如下:
String str1="中国";
byte[] bytes1=str1.getBytes("gbk");//用gbk编码
String str2=new String(bytes1,"ISO-9959-1");//使用错误的字符集解码,产生乱码
/*修复乱码*/
byte[] bytes2=str2.getBytes("ISO-9959-1");//对乱码的字符串使用ISO-9959-1解码,得到原来的byte数组
String s=new String(bytes2,"gbk");//指定正确的字符集进行编码