我使用「* org.apache.commons.lang.StringEscapeUtils.unescapeHtml(myHtmlString)」將Html實體轉義轉換爲包含實際對應於轉義的Unicode字符。但是,它不能正確解析「em dash」和「en dash」符號。 StringEscapeUtils將「」替換爲「\ u0096」,而正確的錯位是「\ u2013」。正如我讀過的「\ u0096」是cp1252相當於「」。那麼我怎樣才能讓它以正確的方式工作呢?我知道我可以手動替換它,但是我想知道是否可以使用StringEscapeUtils或其他util。「org.apache.commons.lang.StringEscapeUtils」和「en破折號」
回答
And as I have read "\u0096" is cp1252 equivalent for "–".
我不這麼認爲。 0×0096的Unicode是一個C1控制代碼:
http://en.wikipedia.org/wiki/C0_and_C1_control_codes
,是不太可能的替代品「 - 」(爲你寫)。
好吧,如果StringEscapeUtils真的弄亂這件事(破折號確實應該\ u2013),如果它是唯一的逃避它是搞亂,如果沒有理由在你的字符串的任何其他0×0096,那麼全部替換後撥打StringEscapeUtils應該工作。
您希望以下並替換:
System.out.println("Broken\u0096stuff".replaceAll("\u0096", "\u2013"));
但是你應該首先確保StringEscapeUtils真的弄亂的東西了,真的,真的,明白爲什麼/如何獲取在Java字符串0×0096 。
然後,也應該指出,可悲的是Java的Unicode支持是一個主要的SNAFU,因爲Java在Unicode 3.1出現之前就已經被構思出來了。
因此,使用16位來處理原始代碼似乎是一個聰明的想法,使用4位十六進制'\ uxxxx'轉義序列似乎是一個聰明的主意,但代表長度的char []中字符串的長度()方法等
這些人其實都是非常非常愚蠢的想法導致了主要的Java天翻地覆的一個,其中焦炭原始不能實際持有一個Unicode字符了何字符串的長度方法實際上是而不是返回一個字符串的實際長度。
我喜歡以下幾點:
final char brokenCharCannotRepresentUnicode31Codepoints = '\uFFFF'; // How do I store a Unicode 3.1 codepoint here!?
爲什麼這種言論?嗯,因爲我不知道怎麼的正則表達式替換字符串的的replaceAll實現,但我真的不會,如果存在這樣的情況(即某些碼點),其中字符串的的replaceAll是,像焦炭驚訝等長度等\ uxxxx,好..嗯,完全破碎。
我懷疑問題不在StringEscapeUtils.unescapeHtml(...)
調用中。
相反,我懷疑這個字符已經變成'\u0096'
之前的這個調用。更具體地說,我懷疑您的代碼在將HTML讀爲字符時使用了錯誤的字符集。
正如你所說,代碼點0x96
在cp1252中。因此,一種將en-dashed誤譯爲unicode代碼點\u0096
的方法是從一個使用cp1252編碼的字節流開始,並使用InputStreamReader(is, "Latin-1")
對其進行讀取/解碼。
- 1. 基於破折號和'破折號'拆分
- 2. git的差異一個破折號和兩個破折號
- 3. Perl - 在命令行參數中輸入en/em破折號
- 4. 破折號
- 5. 用破折號
- 6. 破折號
- 7. java2d破折號
- 8. 一個破折號
- 9. Gnuplot點破折號
- 10. htaccess的破折號
- 11. nginx RTMP,破折號
- 12. 刪除文件名並用mod_rewrite替換破折號破折號
- 13. Python,用短破折號代替長破折號?
- 14. 用破折號去除破折號後的大寫字母
- 15. 僅過濾出0-9和破折號?
- 16. IPython魔術命令和破折號
- 17. wowza,破折號,ssl和cors的問題
- 18. 底線和破折號在變量
- 19. url解碼破折號和下劃線
- 20. R str_replace_all除句點和破折號外
- 21. 同時具有空間和破折號
- 22. String.prototype.replace()刪除破折號和下劃線
- 23. Excel無法刪除Em短劃線並用En破折號替換
- 24. 我是否需要爲en以及em破折號使用HTML標記?
- 25. 雙破折號幹什麼?
- 26. PHP破折號後大寫
- 27. 破折號神社模板
- 28. 破折號路線值
- 29. Yii的DefaultController與破折號
- 30. awk在破折號增量
你究竟想要做什麼?你叫什麼`StringEscapeUtils`方法? – axtavt 2011-02-16 14:35:21