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

JAVA 字符集问题..





Java code
Windows 版本 (文件字符集为GBK)
public class Test {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub

           String a = "啊哦额,aa无a";
           System.out.println(a.length());



        }

}

输出为 8 


Linux 版本 (文件字符集:Test.java: ISO-8859 C++ program text) ,操作系统的字符集US_en
public class Test {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub

           String a = "啊哦额,aa无a";
           System.out.println(a.length());



        }

}

输出为 12 ("啊" 占2个字节)



首先linux文件字符集和系统字符集是不可改变的.但可以改程序.

我想让linux下a.length的长度跟windows下输出是一样的.

另.我需要一个通用的方法 ..

谢谢..各位大哥了


------解决方案--------------------
String str = "啊哦额,aa无a";
try {
byte[] b = str.getBytes("iso-8859-1");
String s = new String(b, "gbk");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}