2012-04-03 11 views
5

Voglio ottenere del testo da una pagina PHP in un'applicazione Android. Finché i caratteri sono ASCII (fino a 128) non ci sono problemi, ma quando voglio visualizzare caratteri speciali come 'Ţ', 'Â' (il cosiddetto Supplemento Latin-1 e/o Latin Extended-A - vederlo a Unicode Chart) Ricevo simboli strani nella mia applicazione Android ().Caratteri speciali tra applicazione Android e script PHP

Il problema è che la mia applicazione Android non può gestire caratteri da Latin-1 Supplement (che può essere PHP) ma caratteri dal set di caratteri Latin Extended-A (che PHP non può). Non so quale set di caratteri comune usare per entrambi i linguaggi perché quello che Java è in grado di leggere PHP non lo è, e viceversa.

funzione My Java che ottiene il contenuto della pagina PHP è questo:

public static String GetData() { 
    byte[] Bresult = null; 
    HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost("http://www.mypage.com/script.php"); 
    try { 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
     nameValuePairs.add(new BasicNameValuePair("var", "val")); 
     post.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); 
     HttpResponse response = client.execute(post); 
     StatusLine statusLine = response.getStatusLine(); 
     if(statusLine.getStatusCode() == HttpURLConnection.HTTP_OK){ 
      Bresult = EntityUtils.toByteArray(response.getEntity()); 
      Result = new String(Bresult, "UTF-8"); 
     } 
    } catch (UnsupportedEncodingException e) { 
     Log.w("MYAPP", "Unsupported Encoding Exception (" + e.getMessage() + ")"); 
    } catch (Exception e) { 
     Log.w("MYAPP", "Exception (" + e.getMessage() + ") ocurred"); 
    } 
    return Result; 
} 

Quindi, questo codice mi dà il contenuto del script.php pagina. Se i caratteri del testo ricevuto sono da 0 a 128, non ci sono problemi. Altrove, ho strani personaggi.

Ora, questo è il mio codice PHP:

<?php 
    header("Content-Type: text/plain;charset=utf-8"); 
    echo "ÂŞÂĂĒ"; 
?> 

Ho anche un'applicazione C++ e si fa leggere il testo in modo corretto. Ho provato molti metodi tutto il giorno e semplicemente non capisco. Chi, dove, perché? Grazie.

+0

Forse guardare a questo http://stackoverflow.com/questions/4917860/android-character- encoding-raw-resource-files e questo http://stackoverflow.com/questions/3098207/how-to-set-string-character-encoding-in-android - qualche aiuto lì? – Aerik

+0

Grazie Aerik. Ora posso inviarli correttamente da PHP ad Android ma non da Android a PHP. Continuare a provare ... – ali

risposta

1

dove stai ottenendo i dati ?, se è attraverso un database MySQL è necessario specificare UTF8 come questo

mysql_query("SET NAMES 'utf8'"); 
+0

O.K. Javo. Lo terrò a mente per quando riceverò del testo dal database. Per ora voglio solo ottenerlo da un file di testo. Grazie – ali

+1

Assicurati anche della codifica nel tuo file di testo. Alcuni editor di testo ti permettono di vedere/impostare la codifica. Inoltre, suggerisco questo forse in modo ingenuo, hai preso in considerazione la codifica di tutto in UTF-8? Android utilizza UTF-8 (http://stackoverflow.com/questions/4564688/what-is-the-default-charset-encoding-of-text-messages-on-android-devices) e ci sono un sacco di risorse per gestire UTF -8 con PHP ... – Aerik