Java獲取字元的Unicode編碼以及如何過濾特殊字元ZWNJ
阿新 • • 發佈:2019-02-02
獲取Unicode編碼
輸出結果:package com.xs.test; public class Test { public static void main(String[] args) throws Exception { int decimal = ((int)'中'); System.out.println(decimal); // Unicode十進位制編碼 String hex = Integer.toHexString(decimal); System.out.println(hex); // Unicode十六進位制編碼 System.out.println("中".contains("\u4e2d")); } }
20013
4e2d
true
過濾特殊字元ZWNJ(zero-width non-joiner)
字元ZWNJ是個不可見的特殊字元,在資料庫中往往會被儲存為亂碼,所以要過濾掉。
檔案a.xml包含兩個特殊字元ZWNJ:
<?xml version="1.0" encoding="UTF-8"?>
<body>中華人民共和國</body>
過濾掉字元ZWNJ:輸出結果:package com.xs.test; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; public class Test2 { public static void main(String[] args) throws IOException { String path = Test2.class.getResource("a.xml").getFile(); String content = FileUtils.readFileToString(new File(path), "UTF-8"); System.out.println(content); char c1 = content.charAt(content.indexOf('華') + 1); int unicode1 = (int)c1; String hexUnicode1 = Integer.toHexString(unicode1); System.out.println(hexUnicode1); char c2 = content.charAt(content.indexOf('民') + 1); int unicode2 = (int)c2; String hexUnicode2 = Integer.toHexString(unicode2); System.out.println(hexUnicode2); System.out.println("-------------過濾後------------"); System.out.println(content.replaceAll("\u200c", "")); } }
<?xml version="1.0" encoding="UTF-8"?>
<body>中華?人民?共和國</body>
200c
200c
-------------過濾後------------
<?xml version="1.0" encoding="UTF-8"?>
<body>中華人民共和國</body>