2016-07-03 12 views
0

Ich habe 2 Telefone: lg g3, die ich aus China gekauft und lg g3, die ich von Israel gekauftanderes Ergebnis in verschiedenen Telefonen

i einen Android-App erstellen, die eine Antwort von Web bekommt nach einem keysearch (Schlüsselsuche kann in jeder Sprache sein: Russisch, Hebräisch, Arabisch, Englisch usw.)

In Englisch funktionieren beide Telefone großartig.

Aber wenn ich nicht-Englisch langauge (alles oben, versuchte nicht chinesisch) das Telefon Israel funktioniert immer noch gut, aber die China-Telefon nicht.

Wenn ich das Programm im China-Telefon debugge, sah ich, dass das keysearch (in nicht englischer langaage), wenn ich die Antwort bekomme, in Fragezeichen ist. aber im Isreal-Telefon funktioniert es großartig, also habe ich alle Arten von Kodierung versucht, aber nichts scheint zu funktionieren.

hier ist das Stück des Codes, der das Problem hat:

HttpURLConnection connection = null; 
     try { 
      //Create connection 
      URL url = new URL("https://www.example.com/results?search_query="+keyword); 
      connection = (HttpURLConnection)url.openConnection(); 
      connection.setRequestProperty("User-Agent", "Mozilla/5.0"); 
      connection.setRequestProperty("Accept-Charset", "UTF-8"); 
      connection.setRequestProperty("content-type", "application/x-www-form-urlencoded; charset=utf-8"); 
      BufferedReader in = new BufferedReader(
        new InputStreamReader(connection.getInputStream(),"UTF-8")); 
      String inputLine; 
      StringBuffer response = new StringBuffer(); 

      while ((inputLine = in.readLine()) != null) { 
       response.append(inputLine); 
       response.append('\r'); 
      } 
      m_htmlDoc = response.toString(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      m_htmlDoc = null; 
     } finally { 
      if(connection != null) { 
       connection.disconnect(); 
      } 
     } 

die Frage ist: Muß ich etwas in dem Code ändern muß, so dass das China-Telefon anderen langauges akzeptieren wird (nicht nur Englisch)? Wenn ja, wäre es schön, wenn mich jemand auf die Antwort verweisen könnte. Wenn nicht, muss ich vielleicht Einstellungen am Telefon ändern? beide Telefone haben die gleiche OS-Sprache (hebräisch)

Danke euch allen.

+0

China verwendet UTF-8 nicht, weil es nicht den allgemeinen Zeichensatz verwendet – Zoe

+0

danke für die Antwort, also wenn nicht utf-8, welchen Zeichensatz sollte ich verwenden, um alle Sprachen zu unterstützen? vielleicht muss ich die Kodierung entsprechend der Fabriksprache des Telefons justieren und damit werde ich die Antwort richtig bekommen? – Joe

+0

https://en.wikipedia.org/wiki/Chinese_character_encoding – Zoe

Antwort

0

damit die utf-8 korrekt war und ich keine lokale Sprache auf dem Telefon ändern musste, brauchte ich nur den keysearch (URLEncoder.encode (Schlüsselwort, "UTF-8") zu kodieren).

dies ist die vollständige Antwort:

HttpURLConnection connection = null; 
     try { 
      //Create connection 
      URL url = new URL("https://www.example.com/results?search_query=" + URLEncoder.encode(keyword, "UTF-8")); 
      connection = (HttpURLConnection)url.openConnection(); 
      connection.setRequestProperty("User-Agent", "Mozilla/5.0"); 
      connection.setRequestProperty("Accept-Charset", "UTF-8"); 
      connection.setRequestProperty("content-type", "application/x-www-form-urlencoded; charset=utf-8"); 
      BufferedReader in = new BufferedReader(
        new InputStreamReader(connection.getInputStream(),"UTF-8")); 
      String inputLine; 
      StringBuffer response = new StringBuffer(); 

      while ((inputLine = in.readLine()) != null) { 
       response.append(inputLine); 
       response.append('\r'); 
      } 
      m_htmlDoc = response.toString(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      m_htmlDoc = null; 
     } finally { 
      if(connection != null) { 
       connection.disconnect(); 
      } 
     } 

Vielen Dank für die Hilfe.

Verwandte Themen