Как преобразовать строку unicode в ASCII в java
Теперь я пытаюсь преобразовать шрифт unicode в ascii в android. Я написал следующую кодировку для преобразования шрифта unicode в ascii, но это не удалось. Потому что результат не может отображаться должным образом после преобразования.
unicode font = 'ေနေ ကာ င ္း ပါ သ လ ား' к чему-то вроде '\ u100F\u1039\u100D'
public static String toJAVA (String zawgyi) {
String output = "";
char[] charArray = zawgyi.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char a = charArray[i];
if ((int) a > 255) {
output += "\\u" + Integer.toHexString((int) a) + "--";
} else {
output += a;
}
}
return output;
}
Ответы
Ответ 1
использовать класс java.text.Normalizer для преобразования из unicode в ascii. вот пример кода из ответа fooobar.com/info/539394/...
String s = "口水雞 hello Ä";
String s1 = Normalizer.normalize(s, Normalizer.Form.NFKD);
String regex = Pattern.quote("[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+");
String s2 = new String(s1.replaceAll(regex, "").getBytes("ascii"), "ascii");
System.out.println(s2);
System.out.println(s.length() == s2.length());