- 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_enpublic 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();
}