2017-06-15 6 views
0

J'ai un problème au sujet de convertisseur de chaîneConvertir chaîne unicode de chaîne ansi/hexadécimal

J'ai lu le contenu de l'URL

http://suggestqueries.google.com/complete/search?client=firefox&hl=us&ds=yt&q=spinner

et le résultat dans la console est

[ » spinner ", [" spinner "," spinner tours "," spinner fidget "," spinner vietnam "," spinner skill "," spinner jouet "," spinner fidget jouet "," spinner vn "," spinner main "," spinner vi \ u1EC7t nam "]]

il contient la chaîne « spinner vi \ u1EC7t nam », mais quand le lire par OS, je vois « Việt nam »

La question est de savoir comment je peux lire le contenu de api pour voir « Việt nam » comme résultat.

Ci-dessous mon code brut

`` `

URL url = new URL("http://suggestqueries.google.com/complete/search?client=firefox&hl=us&ds=yt&q=spinner"); 
    URLConnection urlConnection = url.openConnection(); 
    urlConnection.connect(); 
    InputStream inputStream = urlConnection.getInputStream(); 

    InputStreamReader reader  = new InputStreamReader(inputStream); 
    BufferedReader bufferedReader = new BufferedReader(reader); 
    String line; 
    while((line=bufferedReader.readLine()) != null){ 
     System.out.println(line); 
    } 
    bufferedReader.close(); 
    reader.close(); 

` ``

Répondre

0

Essayez ceci.

static final Pattern UNICODE = Pattern.compile("\\\\u([0-9a-fA-F]{4})"); 

static String decodeUnicodeEscape(String s) { 
    Matcher m = UNICODE.matcher(s); 
    StringBuffer sb = new StringBuffer(); 
    while (m.find()) 
     m.appendReplacement(sb, 
      String.valueOf((char)Integer.parseInt(m.group(1), 16))); 
    m.appendTail(sb); 
    return sb.toString(); 
} 

et

System.out.println(decodeUnicodeEscape(" vi\\u1EC7t nam")); 

résultat

việt nam 
+0

cela fonctionne. Merci beaucoup. Vous économisez mon temps. –