XML-разбор не работает со шведскими Chrs - PullRequest
0 голосов
/ 24 января 2012

Я пытаюсь разобрать следующий xml в punycode, но он не работает (я пытался установить кодировку по-другому).

<?xml version="1.0" encoding="ISO-8859-1" ?>
<domain index="1" domainname="teståbel.nu">

<?xml version="1.0" encoding="UTF-8" ?>
<domain index="1" domainname="teståbel.nu">


public void setDomainName(String domainName) {
        this.domainName = java.net.IDN.toUnicode(domainName);

Когда я запускаю setDomain (), все настроено правильно.

Я запустил это на моей машине, Windows 7 с Local установлен на Swedish, и он не работает. Затем я проверил его на другой машине с Windows XP с установленным локальным языком на английский (США), и он работает.

Итак, я пришел к выводу, что кодирование работает, но моя среда не так, кто-нибудь знает, как это исправить? Могу ли я запустить мою JVM с каким-то параметром или чем-то еще?

Ответы [ 2 ]

0 голосов
/ 24 января 2012

То, что результат зависит от локали вашего компьютера, предполагает, что вы читаете xml-файл, используя набор символов по умолчанию для jvm.Правильный способ - дать парсеру xml понять кодировку.Обычно это означает использование InputStream вместо Reader при разборе документа.

Вы не показали ту часть, где вы фактически анализируете файл, но я предполагаю, что вы создаете FileReader или InputStreamReader без указания кодировки, просто используйте FileInputStream.

0 голосов
/ 24 января 2012

Окей, я нашел ответ, мне нужно запустить мою JVM со следующей опцией:

JAVA_TOOL_OPTIONS : -Dfile.encoding=UTF8
...