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个输出就没有问题呢? 该怎么解决乱码问题呢?

解决方案 »

  1.   

    EUC-JP里面根本就没有①②这两个字符
      

  2.   

    试试UTF-8,很想知道UTF的是否支持。
      

  3.   

    那如果从远程传输过来一段字节数组,而且那个字节数组就是EUC-JP编码的字符串,并且字符串里可能含有①-⑳这20个字符。我用EUC-JP进行解码后,其他文字都正常,但就是这20个字符变成了【?】,该怎么解决呢?
    ----------------------
    通过查看字节数组发现:
    ①的字节编码是:AD A1
    ②的字节编码是:AD A2
    ③的字节编码是:AD A3
    以后都是加1的。
    ....并且我把这段字节数组保存到html文件里后,用浏览器打开就不是乱码了。
    还有,这段字节数组是来自于cvs服务器的,如果用cvs客户端接收也不是乱码。
    浏览器和cvs客户端又是如何做到不乱码的呢?
      

  4.   

    程序是用Java写的,utf-8肯定不会乱码(已经验证)
      

  5.   

    如果是把字节数组保存到文件里,用特殊的IDE(浏览器)打开不会乱码,但Java程序里边改怎么办呢?
      

  6.   

    比如新建一个xml文件,内容为<h>中国</h>保存后,用ie或者火狐打开,会有乱码吧?重新打开文件,另存为,指定编码,比如utf-8。再打开或许就正常了,乱码不乱码,要看你文件编码和IDE编码是否同意,知道文件编码,你可以修改浏览器的编码,查看--字符编码--修改为和你文件一致的编码,就不会有乱码问题。
      

  7.   

    ①②又不是assci码,不是你随意用字符编码就能显示的。
      

  8.   

    System.out.println(new String(string.getBytes("EUC-JP"), "EUC-JP"));
    从Unicode编码的字符串取得EUC-JP bytes,
    再从EUC-JP bytes到Unicode编码的字符串,
    过程没有错,错的原因是EUC-JP不支持出现筹码的那几个字符