Ошибка в Apache Commons StringEscapeUtil? - PullRequest
2 голосов
/ 13 ноября 2010

Только что начал использовать Apache Commons StringEscapeUtils.

Согласно http://www.w3schools.com/tags/ref_entities.asp, Ö должно соответствовать Ö. Тем не менее,

System.out.println(StringEscapeUtils.unescapeHtml4("Ö"));

печать

×

Это ошибка? Или чего мне не хватает?

Ответы [ 3 ]

6 голосов
/ 13 ноября 2010

Полагаю, EntityArrays.java из репозитория lang3 содержит ошибки:

{"\u00D6", "Õ"}, // � - uppercase O, tilde
{"\u00D7", "Ö"}, // � - uppercase O, umlaut
{"\u00D8", "×"}, // multiplication sign 

Кажется, что некоторые значения сдвинуты на одну строку. Должно быть:

 {"\u00D6", "Ö"}, // � - uppercase O, umlaut
 {"\u00D7", "×"}, // multiplication sign 

потому что Ö равно 00D6 согласно ПИСЬМО ЛАТИНСКОГО КАПИТАЛА С ДИАРЕЗОМ

и x - это "\u00D7"

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

версия 2.5 StringEscapeUtils.unescapeHtml печать Ö

версия 3.0-бета StringEscapeUtils.unescapeHtml3 и StringEscapeUtils.unescapeHtml4 печать ×

Как правило, я буду использовать последнюю стабильную версию2.5).Выглядит как ошибка, но я не смог найти ничего полезного в https://issues.apache.org/jira/browse/LANG

0 голосов
/ 13 ноября 2010

Возможно, ваша консоль не может отображать символ Ö.Проверьте системное свойство file.encoding, чтобы увидеть кодировку консоли по умолчанию.

Если ваша консоль поддерживает UTF-8, вы можете попробовать запустить JVM с -Dfile.encoding=utf-8, или вы можете сделать это из своего приложения:

System.setOut(new PrintStream(System.out, true, "utf-8"));

Если консоль не поддерживает UTF-8, я предлагаю вместо этого попытаться записать это в файл, используя кодировку UTF-8, а затем открыть файл в текстовом редакторе, который может обрабатывать UTF-8.

Если все это не работает, то это, вероятно, ошибка в StringEscapeUtils.

...