Properties类中的put方法改掉默认GBK编码方式引发的小问题!
这是小弟在看孙鑫老师视频遇到的一个问题,程序如下,我用pp.put改掉了默认的GBK译码方式,照孙老师讲的如果运行后我输入中文的话那么输出将会是乱码,但我机子上运行过了怎么不会出现乱码的情况呀?(比如输入为:人民q 输出则为:人民)
import java.io.*;
import java.nio.charset.*;
import java.util.*;
class CharsetTest
{
public static void main(String[] args)throws Exception
{
Properties pp = System.getProperties();
pp.put("file.encoding","ISO-8859-1");
int num;
int i=0;
byte[] bytes = new byte[100];
while((num=System.in.read())!='q')
{
bytes[i] =(byte)num;
i++;
}
String str = new String(bytes,0,i);
System.out.println(str);
}
}
下面的程序是孙老师讲的改进方法,这样做之后就能正常输出了,但结果又相反,这次如果输入中文便会输出乱码了.(比如输入:人民q,输出则为:??)
import java.io.*;
import java.nio.charset.*;
import java.util.*;
class CharsetTest
{
public static void main(String[] args)throws Exception
{
Properties pp = System.getProperties();
pp.put("file.encoding","ISO-8859-1");
int num;
int i=0;
byte[] bytes = new byte[100];
while((num=System.in.read())!='q')
{
bytes[i] =(byte)num;
i++;
}
String str = new String(bytes,0,i);
String strGBK = new String(str.getBytes("ISO-8859-1"),"GBK");
System.out.println(strGBK);
}
}
到底是怎么一回事啊?知道的朋友帮忙解释一下,不胜感激!!!