Properties pps = System.getProperties();//获取系统属性
pps.put("file.encoding","ISO-8859-1");//将字符编码改为ISO-8859-1
pps.list(System.out);//将系统属性显示在控制台上
//读取控制台输入的汉字
int data;
byte[] buf = new byte[1000];
int i=0;
while((data=System.in.read())!='q'){
buf[i]=(byte)data;
i++;
}
String str = new String(buf,0,i);System.out.println(str);//输出正常--------1
System.out.println(new String(str.getBytes("ISO-8859-1"),"GB18030"));//输出乱码-----2解释:
我将系统的字符编码改为ISO-8859-1,在控制台输入汉字后,原本应该用2的输出才能正确显示,1的输出显示乱码,结果我得到的结果却恰恰相反
pps.put("file.encoding","ISO-8859-1");//将字符编码改为ISO-8859-1
pps.list(System.out);//将系统属性显示在控制台上
//读取控制台输入的汉字
int data;
byte[] buf = new byte[1000];
int i=0;
while((data=System.in.read())!='q'){
buf[i]=(byte)data;
i++;
}
String str = new String(buf,0,i);System.out.println(str);//输出正常--------1
System.out.println(new String(str.getBytes("ISO-8859-1"),"GB18030"));//输出乱码-----2解释:
我将系统的字符编码改为ISO-8859-1,在控制台输入汉字后,原本应该用2的输出才能正确显示,1的输出显示乱码,结果我得到的结果却恰恰相反
你运行一下程序看看就知道:控制台输入的汉字能不能保存了!
剩下的人:打非所问!!!
我将系统的字符编码改为ISO-8859-1
然后在控制台里输入汉字然后从SYSTEM.OUT中输出(默认是输出GBK字符格式的)所以System.out.println(new String(str.getBytes("ISO-8859-1"),"GBK"));
原理上是应该正确的,但是实际错了 ,就是说我的汉字不是以ISO-8859-1输入,而是以GBK方式输入。
我想问为什么我将字符集改为ISO-8859-1了,结果却不是呢?
方法2 你系统默认是什么字符集呢?如果是GB2312的话 能解释 GB18030的字符?
也就是 以系统字符集的ISO88591编码 和 GB18030的ISO88591的编码不兼容(不一定兼容)
Properties pps = System.getProperties();//获取系统属性
pps.put("file.encoding","ISO-8859-1");//将编码方式改为ISO-8859-1
pps.list(System.out);//将系统属性显示在控制台上
//读取控制台输入的汉字
int data;
byte[] buf = new byte[1000];
int i=0;
while((data=System.in.read())!='q'){
buf[i]=(byte)data;
i++;
} String str = new String(buf,0,i); //以GBK的方式将字节数组数编码
System.out.println(str);//输出正常--------以GBK的方式解码,正确读出
String str = new String(buf,0,i,"ISO-8859-1"); //以ISO-8859-1的方式将字节数组数编码
System.out.println(str);//输出不正常--------以GBK的方式解码,正确读出
System.out.println(new String(str.getBytes("ISO-8859-1"),"GBK"));//输出正常
不是iso-8859-1
是ISO8859-1
1。编码 解码都用了ISO-8859-1虽然可以正确显示
但不能保证所有汉字都正确显示。
2.你用了ISO-8859-1编码 用GB18030解码 编码方式不同 不能正确输出是正常的 。
建议LZ使用支持汉字的编码方式进行编码和解码
。再不行就UTF8
不加设置的话一般中文JAVA会按GBK来处理的。
没有看清楚!请随意鄙视我。,,,不要脸得学习了一回。!不过我也是遇到过这样的问题! 当时是这样done的!虚心向各位请教!