2016-05-25 8 views
0

ich diesen PHP-Code bin mit dem JSON von MySQL-Datenbank zu generieren:Konvertieren codierte utf-8 JSON

while($row =mysqli_fetch_assoc($result)) 
     { 
$emparray[] = array_map('utf8_encode', $row); 
     } 
     echo json_encode($emparray); 

Dann benutze ich die HttpURLConnection die URL zu holen und den Echo-String erhalten:

URL url = new URL("http://localhost/myserver.php"); 

      urlConnection = (HttpURLConnection) url.openConnection(); 
      InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
      result = new StringBuilder(); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       result.append(line); 
      } 

der Druck ist:

[{"id":"1","titulo":"C\u00f3digo de Defesa do Consumidor","descricao":"Institui o c\u00f3digo de defesa do consumidor","tags":"cdc","categorias":"cat_cod,cat_leisord","numero_da_lei":"13105","data_da_lei":"11111111","ativa":"1","byuser":"0","versao_da_lei":"0","url":"http:\/\/www.planalto.gov.br\/ccivil_03\/leis\/L8078compilado.htm"}] 

ich weiß, dass der Ausgang, weil ich $emparray[] = array_map('utf8_encode', $row); haben codiert wird, aber wenn Ich benutze das nicht, der Text, der spezielle Zeichen hat, wird NULL.

Wie kann ich konvertieren

"titulo":"C\u00f3digo de Defesa do Consumidor" 

zu

"titulo":"Código de Defesa do Consumidor" 

Ich habe versucht:

new String(result.getBytes(), "UTF-8"); 

aber nichts

geändert
+0

versuchen gesetzt Header Ihres 'myserver.php' als' header ('Content-Type: application/json; charset = utf-8 '); 'schreibe diese Zeile oben (erste Zeile) – Akam

+0

Wie wäre es mit' mysql_set_charset' oder' mysqli :: set_charset', UTF-8 als Standard-Zeichensatz für alle MySQL-Verbindungen zu setzen? – user1219801

+0

Mögliches Duplikat von [UTF-8 durchgehend] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) –

Antwort

0

Sie können StringEscapeUtils Apache-Bibliothekverwenden

Zum Speichern der Unicodes in der Datenbank müssen Sie sie kodieren. Also Ihr Unicodes zum Server senden, indem Codierung wie

StringEscapeUtils.escapeJava("Código de Defesa do Consumidor") 

Für die codierte Unicode-Anzeige in Android

StringEscapeUtils.unescapeJava("C\u00f3digo de Defesa do Consumidor") 
Verwandte Themen