Android应用程序和PHP脚本之间的特殊字符

Android应用程序和PHP脚本之间的特殊字符,php,android,special-characters,Php,Android,Special Characters,我想从PHP页面中获取一些文本到Android应用程序中。只要字符是ASCII码(最多128个),就没有问题,但当我想显示特殊字符时,如“Ţ”、“Ţ”(所谓的拉丁语-1补充和/或拉丁语扩展-A-请参阅) 我在Android应用程序中加入了奇怪的符号(�). 问题是,我的Android应用程序无法处理拉丁语-1增补(PHP可以)中的字符,但无法处理拉丁语扩展-A字符集(PHP不能)中的字符。我不知道这两种语言可以使用什么通用字符集,因为Java能够读取PHP的字符集不是,反之亦然 获取PHP页面内

我想从PHP页面中获取一些文本到Android应用程序中。只要字符是ASCII码(最多128个),就没有问题,但当我想显示特殊字符时,如“Ţ”、“Ţ”(所谓的拉丁语-1补充和/或拉丁语扩展-A-请参阅) 我在Android应用程序中加入了奇怪的符号(�).

问题是,我的Android应用程序无法处理拉丁语-1增补(PHP可以)中的字符,但无法处理拉丁语扩展-A字符集(PHP不能)中的字符。我不知道这两种语言可以使用什么通用字符集,因为Java能够读取PHP的字符集不是,反之亦然

获取PHP页面内容的Java函数如下:

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;
}
公共静态字符串GetData(){
字节[]Bresult=null;
HttpClient=new DefaultHttpClient();
HttpPost=新的HttpPost(“http://www.mypage.com/script.php");
试一试{
List nameValuePairs=新的ArrayList(1);
添加(新的BasicNameValuePair(“var”、“val”);
post.setEntity(新的UrlEncodedFormEntity(nameValuePairs,“UTF-8”);
HttpResponse response=client.execute(post);
StatusLine StatusLine=response.getStatusLine();
if(statusLine.getStatusCode()==HttpURLConnection.HTTP\u OK){
Bresult=EntityUtils.toByteArray(response.getEntity());
结果=新字符串(Bresult,“UTF-8”);
}
}捕获(不支持的编码异常e){
Log.w(“MYAPP”,“不支持的编码异常(“+e.getMessage()+”)”);
}捕获(例外e){
Log.w(“MYAPP”、“异常”(+e.getMessage()+”)ocurred);
}
返回结果;
}
因此,这段代码为我提供了script.php页面的内容。如果接收到的文本的字符从0到128,就没有问题。在其他地方,我会得到奇怪的字符

现在,这是我的PHP代码:

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

<>我还有一个C++应用程序,它确实读了文本。我已经尝试了很多方法一整天,我就是不明白。谁,在哪里,为什么?
谢谢。

你从哪里获得数据?如果是通过mysql数据库,你必须像这样指定UTF8

mysql_query("SET NAMES 'utf8'");

也许看看这个和这个-有什么帮助吗?谢谢Aerik。现在我可以正确地将它们从PHP发送到Android,但不能从Android发送到PHP。继续尝试…好的,Javo。我会记住这一点,以便从数据库中获取文本。现在我只想从文本文件中获取它。谢谢您也确保文本文件中的编码。一些文本编辑器可以让您查看/设置编码。此外,我建议您使用UTF-8进行编码,您是否考虑过使用UTF-8进行编码?Android使用UTF-8(),并且有大量的资源用于使用PHP处理UTF-8。。。