日期:2014-05-20  浏览次数:20706 次

关于英文系统开发环境中java的中文处理
环境:英文XP   SP2,Eclipse   3.2,JDK   1.5

使用测试代码:
String   encoding   =   System.getProperty( "file.encoding ");
System.out.println( "file.encoding: "   +   encoding);
System.out.println( "sun.jnu.encoding: "   +   System.getProperty( "sun.jnu.encoding "));

String   testString   =   "现在开始测试 ";

System.out.println(testString);

System.out.println(new   String(testString.getBytes( "ISO-8859-1 "), "gb2312 "));
System.out.println(new   String(testString.getBytes( "UTF8 "),   "gb2312 "));
System.out.println(new   String(testString.getBytes( "GB2312 "), "gb2312 "));
System.out.println(new   String(testString.getBytes( "GBK "),   "gb2312 "));
System.out.println(new   String(testString.getBytes( "BIG5 "),   "gb2312 "));
System.out.println(new   String(testString.getBytes( "Cp1252 "), "gb2312 "));

System.clearProperty( "file.encoding ");
System.setProperty( "file.encoding ",   "UTF-8 ");
System.setProperty( "sun.jnu.encoding ",   "UTF-8 ");
System.out.println( "file.encoding: "   +   System.getProperty( "file.encoding "));
System.out.println( "sun.jnu.encoding: "   +   System.getProperty( "sun.jnu.encoding "));

System.out.println(testString);
//   这一段出现了乱码,那么不妨用穷举法猜测一下它的实际编码格式。
System.out.println(new   String(testString.getBytes( "ISO-8859-1 "), "gb2312 "));
System.out.println(new   String(testString.getBytes( "UTF8 "),   "gb2312 "));
System.out.println(new   String(testString.getBytes( "GB2312 "), "gb2312 "));
System.out.println(new   String(testString.getBytes( "GBK "),   "gb2312 "));
System.out.println(new   String(testString.getBytes( "BIG5 "),   "gb2312 "));
System.out.println(new   String(testString.getBytes( "Cp1252 "), "gb2312 "));


Console   log为:
file.encoding:Cp1252
sun.jnu.encoding:GBK
??????
??????
?????????????
??????
??????
??b??l??
??????
file.encoding:UTF-8
sun.jnu.encoding:UTF-8
??????
??????
?????????????
??????
??????
??b??l??
??????

请大家来支支招,这类的Console文中的怎么处理。

------解决方案--------------------
String testString = "现在开始测试 "; 你这段出的问题。
------解决方案--------------------
在英文控制台下,总是显示乱码。但是,
这些乱码分为2类,楼主心中一定要分清楚:

1. 一种情况是:程序的处理过程本身就是错的,因此显示出来乱码。
2. 另一种情况是:程序是对的,由于控制台是英文的无法显示汉字而显示乱码。

第二种情况中,程序是对的,也就是说,虽然在控制台显示是乱码,但如果作为服务程序,当客户端是中文环境是,能够正常显示中文。
而第一种情况中,就算是作为服务程序,客户端是中文时仍然会是乱码。

因此,光凭着这样试是无法拿出最好的方案来的。

推荐楼主从概念入手,掌握其中的原理:
http://www.regexlab.com/zh/encoding.htm

------解决方案--------------------
改console的code page。