NCR字元編碼(形如中国)轉換為漢字 in JAVA
numericcharacterreference(NCR),數字取值為目標字元的Unicodecodepoint;以「&;#」開頭的後接十進位制數字,以「&;#x」開頭的後接十六進位制數字。「中國」二字分別是Unicode字元U+4E2D和U+56FD,十六進位制表示的codepoint數值「4E2D」和「56FD」就是十進位制的「20013」和「22269」。所以——中國中國——這兩種NCR寫法都會在顯示時轉換為「中國」二字。
轉自&;#x開頭的是什麼編碼呢
我在專案中碰到的情況是在window環境下不會出現這種問題,從前臺傳過來的文字儲存到資料庫中編碼格式不會轉變,但是在Linux下出現文字轉變成NCR字元編碼格式,在網上找尋了一些方法已經解決,特在此記錄。
public class test { public static void main(String[] args) { String str = "#20013;国"; String s = str(str); System.out.print(s); } public static String str(String str) { StringBuffer sb = new StringBuffer(); String myString = str.replace("&#", ""); String[] split = myString.split(";"); for (int i = 0; i < split.length; i++) { sb.append((char) Integer.parseInt(split[i])); } return sb.toString(); } }