Преобразование кодировки Java - PullRequest
0 голосов
/ 05 ноября 2010

Привет У меня есть сценарий, в котором мне нужно преобразовать кодировку по умолчанию, которая должна быть переопределена, но UTF-8. Я использую ниже класс. Но я не получаю ожидаемый результат. Потому что я использую Unix-систему с UTF-8 по умолчанию в качестве кодировки и сравниваю результаты там. Я что-то не так в этой программе?

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, который я не получаю в enix * 1007

Ответы [ 2 ]

2 голосов
/ 05 ноября 2010

Если Java не распознает кодировку вашей локали должным образом, вам может потребоваться указать это явно в командной строке:

java -Dfile.encoding=utf-8 CharsetDisplay
2 голосов
/ 05 ноября 2010

Что вы ожидаете нулевого байта для рендеринга, как в этой среде?Ваш вывод выглядит для меня совершенно корректно.

Не забывайте, что любые различия, которые вы встречаете между средами, могут не относиться к Java.Если вы вызываете свою Java-программу из консоли (что я и ожидаю), консоль должна фактически преобразовать вывод программы в то, что вы видите на экране.Поэтому в зависимости от кодировки, используемой консолью , для Java вполне возможно вывести ожидаемые символы, но консоль не сможет правильно их отобразить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...