DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

Java的字符编码集


实验步骤

  1. CharSetTest.java文件(内容如下)在Windows下编译为class文件:

import java.nio.charset.Charset; import java.io.OutputStreamWriter; import java.io.ByteArrayOutputStream; public class CharSetTest { public static void main(String[] args) { System.out.println("Default Charset=" + Charset.defaultCharset()); System.setProperty("file.encoding", "Latin-1"); System.out.println("file.encoding=" + System.getProperty("file.encoding")); System.out.println("Default Charset=" + Charset.defaultCharset()); System.out.println("Default Charset in Use=" + getDefaultCharSet());

System.out.println("Default 字符集(在使用中的)=" + getDefaultCharSet()); } private static String getDefaultCharSet() { OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream()); String enc = writer.getEncoding(); return enc; } }

  1. ftp到Red Hat Linux上运行:

/opt/jdk1.6.0_35/bin/java CharSetTest

Default Charset=UTF-8 file.encoding=Latin-1 Default Charset=UTF-8 Default Charset in Use=UTF8 Default 字符集(在使用中的)=UTF8

/opt/jdk1.6.0_35/bin/java -Dfile.encoding=GBK CharSetTest

Default Charset=GBK file.encoding=Latin-1 Default Charset=GBK Default Charset in Use=GBK Default ؖ·՚ʹԃאµģ©=GBK

(将XShell的显示编码改为GBK后可以正常显示汉字)

/opt/jdk1.6.0_35/bin/java -Dfile.encoding=UTF-8 CharSetTest Default Charset=UTF-8 file.encoding=Latin-1 Default Charset=UTF-8 Default Charset in Use=UTF8 Default 字符集(在使用中的)=UTF8

  1. 本地Windows上运行

D:\Apps\Java\jdk1.6.0_35\jre\bin\java.exe CharSetTest Default Charset=GBK file.encoding=Latin-1 Default Charset=GBK Default Charset in Use=GBK Default 字符集(在使用中的)=GBK

D:\Apps\Java\jdk1.6.0_35\jre\bin\java.exe -Dfile.encoding=GBK CharSetTest

Default Charset=GBK file.encoding=Latin-1 Default Charset=GBK Default Charset in Use=GBK Default 字符集(在使用中的)=GBK

D:\Apps\Java\jdk1.6.0_35\jre\bin\java.exe -Dfile.encoding=UTF-8 CharSetTest Default Charset=UTF-8 file.encoding=Latin-1 Default Charset=UTF-8 Default Charset in Use=UTF8 Default 瀛楃闆嗭紙鍦ㄤ娇鐢ㄤ腑鐨勶級=UTF8

结果分析

Java文件使用GBK编码,但class文件中汉字是用UTF-8编码的,47上的测试表明不论-Dfile.encoding的值是什么,只要把与XShell的显示编码保持一致就可以正确显示。

参考文献:

http://stackoverflow.com/questions/1749064/how-to-find-default-charset-encoding-in-java

http://stackoverflow.com/questions/2677419/determining-default-character-set-of-platform-in-java

http://stackoverflow.com/questions/5306153/how-to-get-terminals-character-encoding



Published

Dec 14, 2012

Last Updated

Dec 14, 2012

Category

Tech

Tags

  • charset 4
  • encoding 8
  • Java 106

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor