2012-04-03 5 views
5

Quiero obtener algo de texto de una página de PHP en una aplicación de Android. Siempre y cuando los caracteres sean ASCII (hasta 128) no hay problema, pero cuando quiero mostrar caracteres especiales como 'Ţ', 'Â' (el llamado Suplemento Latin-1 y/o Latin Extended-A, véalo en Unicode Chart) Obtengo símbolos extraños en mi aplicación de Android ().Caracteres especiales entre la aplicación de Android y el script PHP

El problema es que mi aplicación Android no puede manejar caracteres de Latin-1 Supplement (que PHP puede) pero caracteres del Latin Extended-A charset (que PHP no puede). No sé qué juego de caracteres común para ambos idiomas usar porque el que Java puede leer PHP no es, y viceversa.

función Mi Java que obtiene el contenido de la página PHP es la siguiente:

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; 
} 

Por lo tanto, este código me da el contenido de la página script.php . Si los caracteres del texto recibido son de 0 a 128, no hay problema. En otros lugares, obtengo personajes extraños.

Ahora bien, esta es mi código PHP:

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

También tengo una aplicación C++ y lo hace leer el texto correctamente. He estado probando muchos métodos todo el día y simplemente no lo entiendo. Quién, dónde, por qué? Gracias.

+0

Tal vez mira esto http://stackoverflow.com/questions/4917860/android-character- encoding-raw-resource-files y este http://stackoverflow.com/questions/3098207/how-to-set-string-character-encoding-in-android - ¿Alguna ayuda allí? – Aerik

+0

Gracias Aerik. Ahora puedo enviarlos correctamente de PHP a Android, pero no de Android a PHP. Manteniendo el intento ... – ali

Respuesta

1

donde está usted recibiendo los datos ?, si es a través de una base de datos MySQL debe especificar UTF8 como esto

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

O.K. Javo. Lo tendré en cuenta para cuando reciba el texto de la base de datos. Por ahora solo quiero obtenerlo de un archivo de texto. Gracias – ali

+1

Asegúrese también de la codificación en su archivo de texto. Algunos editores de texto te permiten ver/configurar la codificación. Además, sugiero esto quizás ingenuamente, ¿has considerado codificar todo en UTF-8? Android usa UTF-8 (http://stackoverflow.com/questions/4564688/what-is-the-default-charset-encoding-of-text-messages-on-android-devices) y hay muchos recursos para manejar UTF -8 con PHP ... – Aerik

Cuestiones relacionadas