如何在java中进行编码格式转换:
下面这行代码的含义是: 获取目标字符串str的gbk编码格式的二进制码,然后将二进制码按照utf8编码格式重新编码成字符串,当然,下面这种写法百分百会乱码,因为编码格式不一致.
new String(str.getBytes("gbk"),"utf8")
首先什么情况会乱码:
如果要传输一个字符串,首先要按照一定的编码格式将字符串转换成字节流,当字节流传输到接收方的时候再将字节流按照某种编码格式转换成字符串.乱码也正是产生在重新转换成字符串的过程中.以下是我对中文乱码的测试:
String str="彩虹";
String [] a=new String[] {"gbk","unicode","utf8","gb2312"};
for (int i=0;i<a.length;i++){
for (int j=0;j<a.length;j++){
System.out.println("二进制格式: "+a[i]+"编码格式: "+a[j]);
System.out.println("编码后的字符串: "+new String(str.getBytes(a[i]),a[j]));
}
}
二进制格式: gbk编码格式: gbk
编码后的字符串: 彩虹
二进制格式: gbk编码格式: unicode
编码后的字符串: 닊뫧