Javaは文字のUnicode符号化を取得し、特殊文字ZWNJをどのようにフィルタリングするか
1728 ワード
Unicodeコードの取得
特殊文字ZWNJ(zero-width non-joiner)をフィルタ
文字ZWNJは非表示の特殊文字で、データベースでは文字化けして保存されることが多いので、フィルタリングします.
ファイルa.xmlには2つの特殊文字ZWNJが含まれています.
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には2つの特殊文字ZWNJが含まれています.
文字をフィルタする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", ""));
}
}
出力結果:
? ?
200c
200c
------------- ------------