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下输出是一样的.另.我需要一个通用的方法 ..谢谢..各位大哥了
try {
byte[] b = str.getBytes("iso-8859-1");
String s = new String(b, "gbk");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Linux 版本 (文件字符集:Test.java: ISO-8859 C++ program text)
问题就出在这个文件字符集
你文件内的中文全部被作为单字节长度存储,编译的时候是不会知道两个字节在一起要组成一个中文,
文件本身不可能用gbk字符集对iso-8859-1进行一个encode你找个二进制文本编辑器,看一下gbk字符集的文件打开的样子,比较iso字符集的内容就知道区别了至于解决办法,除了让java文件本身支持多字节以外,貌似没啥其他办法了吧