2013-03-12 20 views
10

Ora sto provando a convertire il font unicode in ASCII in Android. Ho scritto la seguente codifica per convertire il font unicode in ascii ma non è riuscito. Perché il risultato non può essere visualizzato correttamente dopo essere stato convertito.come posso convertire la stringa unicode in ASCII in java

font Unicode = 'ေနေ ကာင္း ပါသလား' a qualcosa come '\ 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

Eventuali duplicati di http://stackoverflow.com/questions/1490218/utf-16-to-ascii-conversion-in-java – Pragnani

+0

Sembra duplicato ma ancora incontrano errore. – ppshein

risposta

6

classe di utilizzo java.text.Normalizer convertire da unicode in ASCII. ecco un esempio di codice dalla risposta 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

Spiacente, ho ottenuto seguente errore. 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

ora verifica di aver aggiunto la riga String regex = Pattern.quote ("[\\ p {InCombiningDiacriticalMarks} \\ p {IsLm} \\ p {IsSk} ] + "); ... Ho appena controllato da solo – stinepike

+0

dove hai aggiunto la riga sopra? – ppshein

Problemi correlati