Charset转换Java

时间:2010-11-05 12:00:14

标签: java character-encoding

您好 我有一个场景,我需要转换默认的Charset应该被覆盖bu UTF-8。我在下课时使用。但我没有得到预期的输出。因为我使用默认UTF-8作为字符集的unix系统,我在那里比较结果。我在这个程序的某处错了吗?

public class CharsetDisplay {

 public static void main(String[] args) {
  System.out.println(Charset.defaultCharset().name());
  System.out.println(Charset.isSupported("UTF-8"));
  final Charset UTF8_CHARSET = Charset.forName("UTF-8");
  try {
   byte[] byteArray = new byte[] {34,34,0};
   String str = new String(byteArray,UTF8_CHARSET);
   System.out.println("String*** "+str);
   System.out.println("String to Hex *** "+stringToHex(str));
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

}

将输出打印为

windows-1252
true
String*** ""

注意在字符串输出中的“”之后我有一个spl char,我没有在unix env中获取

2 个答案:

答案 0 :(得分:2)

您希望期望在此环境中呈现零字节?你的输出对我来说看起来完全正确。

不要忘记,您在环境之间遇到的任何差异可能都不会归结为Java。如果您从控制台调用Java程序(我希望您是这样),则可以通过控制台将程序的输出实际转换为您在屏幕上看到的输出。因此,根据控制台正在使用的字符集,Java完全可以输出您期望的字符,但是控制台无法正确呈现它们。

答案 1 :(得分:2)

如果Java没有正确地获取您的语言环境的编码,您可能必须在命令行中明确地告诉它:

java -Dfile.encoding=utf-8 CharsetDisplay