Изменение кодировки по умолчанию для String (byte []) - PullRequest
10 голосов
/ 17 сентября 2008

Есть ли способ изменить кодировку, используемую конструктором String (byte [])?

В моем собственном коде я использую String (byte [], String) для указания кодировки, но я использую внешнюю библиотеку, которую я не могу изменить.

String src = "with accents: é à";
byte[] bytes = src.getBytes("UTF-8");
System.out.println("UTF-8 decoded: "+new String(bytes,"UTF-8"));
System.out.println("Default decoded: "+new String(bytes));

Выход для этого:

UTF-8 decoded: with accents: é à
Default decoded: with accents: é à 

Я попытался изменить системное свойство file.encoding, но оно не работает.

Ответы [ 3 ]

7 голосов
/ 17 сентября 2008

Вам нужно изменить локаль перед запуском JVM; см:

Java, идентификатор ошибки 4163515

В некоторых местах кажется, что вы можете сделать это, установив переменную file.encoding при запуске JVM, например

java -Dfile.encoding=UTF-8 ...

... но я сам не пробовал. Самый безопасный способ - установить переменную среды в операционной системе.

1 голос
/ 06 октября 2012

Я думаю, что вы хотите это: System.setProperty ("file.encoding", "UTF-8");

Это решило некоторые проблемы, но у меня все еще есть другие. Символы "í" и "Í" не конвертируются правильно, если SO - ISO-8859-1. Просто с опцией JVM при запуске я понимаю, что это решено. Теперь только моя консоль Java в IDE NetBeans вызывает сбой кодировки при отображении специальных символов.

1 голос
/ 17 сентября 2008

Цитируется из defaultCharset ()

Определена кодировка по умолчанию во время запуска виртуальной машины и как правило, зависит от региона и кодировка основной операционной система.

В большинстве операционных систем вы можете установить кодировку, используя переменную окружения.

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