我怎么能unicode字符串转换为ASCII在Java(how can I convert unic

2019-07-21 09:31发布

现在我想的Unicode字体转换为ASCII的机器人。 我写了下面的编码为Unicode字体转换为ASCII,但它的失败。 因为结果不能被转换之后正确显示。

Unicode字体= '你好吗' 的东西像 '\ 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;
}

Answer 1:

使用java.text.Normalizer类从Unicode转换为ASCII。 这里是答案示例代码https://stackoverflow.com/a/2097224/931982

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());


文章来源: how can I convert unicode string to ASCII in java