2013-03-12 296 views
10

我現在正在嘗試將unicode字體轉換爲android中的ascii。我寫了下面的代碼將unicode字體轉換爲ascii,但它失敗了。因爲轉換後結果無法正確顯示。如何將Unicode字符串轉換爲java中的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; 
} 
+0

http://stackoverflow.com/questions/1490218/utf-16-to-ascii-conversion-in-java – Pragnani 2013-03-12 08:49:46

+0

的可能重複這似乎重複,但還是會遇到錯誤。 – ppshein 2013-03-12 09:30:05

回答

6

使用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()); 
+0

對不起,得到以下錯誤。12 15:41:10.909:E/AndroidRuntime(25891):java.util.regex.PatternSyntaxException:U_ILLEGAL_ARGUMENT_ERROR 03-12 15:41:10.909:E/AndroidRuntime(25891):[\ p {InCombiningDiacriticalMarks} \ p {IsLm} \ p {IsSk}] + – ppshein 2013-03-12 09:13:18

+0

現在檢查我已經添加了行String regex = Pattern.quote(「[\\ p {InCombiningDiacriticalMarks} \\ p {IsLm} \\ p {IsSk} ] +「); ...我只是自己檢查了 – stinepike 2013-03-12 09:31:12

+0

你在哪裏添加了上面的內容? – ppshein 2013-03-12 09:33:59

相關問題