剛開始使用Apache Commons StringEscapeUtils
。Apache Commons中的Bug StringEscapeUtil?
根據http://www.w3schools.com/tags/ref_entities.asp,Ö
應該對應於Ö。然而,
System.out.println(StringEscapeUtils.unescapeHtml4("Ö"));
打印
×
這是一個錯誤?或者我錯過了什麼?
剛開始使用Apache Commons StringEscapeUtils
。Apache Commons中的Bug StringEscapeUtil?
根據http://www.w3schools.com/tags/ref_entities.asp,Ö
應該對應於Ö。然而,
System.out.println(StringEscapeUtils.unescapeHtml4("Ö"));
打印
×
這是一個錯誤?或者我錯過了什麼?
版本2.5 StringEscapeUtils.unescapeHtml
打印Ö
3.0-βStringEscapeUtils.unescapeHtml3
和StringEscapeUtils.unescapeHtml4
打印×
一般來說,我會使用最新的穩定版本(目前爲2.5)。看起來像一個錯誤,但在https://issues.apache.org/jira/browse/LANG
也許你的控制檯不能顯示Ö字符。檢查系統屬性file.encoding
以查看默認控制檯編碼是什麼。
如果你的控制檯支持UTF-8,你可以嘗試用-Dfile.encoding=utf-8
啓動JVM,或者你可以從你的應用程序做到這一點:
System.setOut(new PrintStream(System.out, true, "utf-8"));
如果控制檯不支持UTF-8,我建議嘗試使用UTF-8編碼將其寫入文件,然後使用可處理UTF-8的文本編輯器打開該文件。
如果所有這些都不起作用,那麼它可能是StringEscapeUtils
中的一個錯誤。
控制檯爲'ö'打印'ö''所以這可能不是問題。 – aioobe 2010-11-13 14:16:05
爲什麼downvote? – Grodriguez 2011-09-12 15:07:42
我猜EntityArrays.java從lang3庫我無法找到任何有用的越野車:
{"\u00D6", "Õ"}, // � - uppercase O, tilde
{"\u00D7", "Ö"}, // � - uppercase O, umlaut
{"\u00D8", "×"}, // multiplication sign
看來,有些值由一排移動。它必須是:
{"\u00D6", "Ö"}, // � - uppercase O, umlaut
{"\u00D7", "×"}, // multiplication sign
因爲Ö
根據LATIN CAPITAL LETTER O WITH DIAERESIS
和x
00D6
是"\u00D7"
打開JIRA:https://issues.apache.org/jira/browse/LANG-658 – 2010-11-13 14:41:09
+1精確度和主動性。 – 2011-08-22 23:48:06
它在哪裏打印?在控制檯上? – cherouvim 2010-11-13 13:42:43
不,在打印機上... jk,是的,在控制檯中。 – aioobe 2010-11-13 13:46:12
你的控制檯能顯示'Ö'嗎? – cherouvim 2010-11-13 13:56:14