日期:2014-05-20  浏览次数:20802 次

字符编码问题求解

import java.io.UnsupportedEncodingException;

public class mainTest {

/**
 * @param args
 */
public static void main(String[] args) {
String string = "解析①②";
try {
System.out.println(new String(string.getBytes("EUC-JP"), "EUC-JP"));
System.out.println(new String(string.getBytes("SHIFT-JIS"), "SHIFT-JIS"));
System.out.println(new String(string.getBytes("ISO-2022-JP"), "ISO-2022-JP"));
System.out.println(new String(string.getBytes("MS932"), "MS932"));
System.out.println(new String(string.getBytes("GBK"), "GBK"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}


为什么前三个输出字符①②变成了乱码,而后2个输出就没有问题呢? 该怎么解决乱码问题呢?

------解决方案--------------------
EUC-JP里面根本就没有①②这两个字符
------解决方案--------------------
试试UTF-8,很想知道UTF的是否支持。
------解决方案--------------------
比如新建一个xml文件,内容为<h>中国</h>保存后,用ie或者火狐打开,会有乱码吧?重新打开文件,另存为,指定编码,比如utf-8。再打开或许就正常了,乱码不乱码,要看你文件编码和IDE编码是否同意,知道文件编码,你可以修改浏览器的编码,查看--字符编码--修改为和你文件一致的编码,就不会有乱码问题。
------解决方案--------------------
①②又不是assci码,不是你随意用字符编码就能显示的。
------解决方案--------------------
System.out.println(new String(string.getBytes("EUC-JP"), "EUC-JP"));
从Unicode编码的字符串取得EUC-JP bytes,
再从EUC-JP bytes到Unicode编码的字符串,
过程没有错,错的原因是EUC-JP不支持出现筹码的那几个字符