java字符串编码的问题

超级呆子 发布于 2013/06/21 17:59
阅读 188
收藏 0

public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s = br.readLine();
		String x = new String(s.getBytes(),"GBK");
		System.out.println(x);
		System.out.println("==============================");
		for(int i=0;i<s.length();i++) {
			int hex = 0xFFFF & s.charAt(i);
			System.out.print(Integer.toHexString(hex));
			System.out.println(" ");
		}
		System.out.println("==============================");
		System.out.println( new String(s.getBytes(),"UTF-8") );
	}
如果这个java源文件是UTF8类型的,则输入:"中文",结果如下:

中文
娑擃厽鏋�
==============================
6d93 
e15f 
6783 
==============================
涓枃

如果源文件是GBK的,则结果如下:

中文
中文
==============================
4e2d 
6587 
==============================
????

UTF-8使用都不对,另外结果也受到源文件编码方式的影响。

如何能正确转换出UTF-8格式的编码内容呢?


加载中
0
若海
若海
JDK的默认编码是操作系统的默认编码,一般地中文系统对应的是GBK。所以你把最后一句改为System.out.println(new String(s.getBytes("GBK"), "UTF-8"));就可以了
返回顶部
顶部