2013-03-12 13 views
10

Próbuję teraz przekonwertować czcionkę Unicode na ASCII w Androidzie. Napisałem po kodowaniu, aby przekonwertować czcionkę Unicode na ASCII, ale to się nie udało. Ponieważ wynik nie może być wyświetlany poprawnie po konwersji.jak mogę przekonwertować ciąg znaków Unicode na ASCII w java

Unicode font = 'ေနေ ကာင္း ပါသလား' to coś jak '\ 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

Możliwy duplikat http://stackoverflow.com/questions/1490218/utf-16-to-ascii-conversion-in-java – Pragnani

+0

Wydaje powielane, ale nadal napotykają błąd. – ppshein

Odpowiedz

6

użyć klasy java.text.Normalizer przekonwertować z Unicode do ASCII. tutaj jest przykładowy kod z odpowiedzi 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

Przepraszamy, ale wystąpił błąd.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

+0

teraz sprawdź, czy dodałem linię String regex = Pattern.quote ("[\\ p {InCombiningDiacriticalMarks} \\ p {IsLm} \\ p {IsSk} ] + "); ... Właśnie sprawdziłem, gdzie jest – stinepike

+0

gdzie dodałeś powyższą linię? – ppshein

Powiązane problemy