àèìòù;在Android中->;PHP->;神谕

àèìòù;在Android中->;PHP->;神谕,php,android,oracle,character-encoding,Php,Android,Oracle,Character Encoding,Android应用程序有一个字符串papá(如果我输出它,我会看到:papá) 我将这个字符串发送到一个编码为JSON的PHP脚本,如果我回显这个字符串,我会读到:pap� 如果我在数据库中看到它存储为pap�(显然) 如果我在数据库中直接写入papá,我会读取papá(显然) 在这一点上,我几乎可以肯定问题出在PHP上,我尝试了htmlentities,并在数据库中阅读了papà 我想你有我的问题的所有信息。有什么想法吗 编辑以添加代码: 在Android中,我将字符串放在地图中:

Android应用程序有一个字符串
papá
(如果我输出它,我会看到:
papá

我将这个字符串发送到一个编码为JSON的PHP脚本,如果我回显这个字符串,我会读到:
pap�

如果我在数据库中看到它存储为
pap�(显然)

如果我在数据库中直接写入
papá
,我会读取
papá
(显然)

在这一点上,我几乎可以肯定问题出在PHP上,我尝试了
htmlentities
,并在数据库中阅读了
papà

我想你有我的问题的所有信息。有什么想法吗

编辑以添加代码:

在Android中,我将字符串放在地图中:

dati.put("tipo", sottoT);
之后,执行Json的参数

ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
    for (Map.Entry<String, String> entry : dati.entrySet()) {
        params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
    }

        JSONObject json = jsonParser.makeHttpRequest(URL,
            "POST", params);
$v
此时已是错误的


PHP版本5.3.14

为什么不尝试将其转换为html符号?像
$#数字。如果不超过状态编码,如
utf-8常规\u ci
ANSI
。它曾经帮助过我。

您应该在android代码中指定编码:

httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
否则,它将是

在PHP方面,不要进行任何转换,例如
utf8\u解码/编码
,这些都只会让事情变得更糟

还要修复您的http头:

<?php
header('Content-Type: application/json; charset=utf-8');
print_r($_POST);

只是出于好奇。。。我终于解决了这个问题。我无法添加数据库必须使用的字符集,因此我将:
$conn=oci\u new\u connect($userDb、$pswDB、$urlDb、'AL32UTF8')
相反
$conn=oci\u new\u connect($userDb、$pswDB、$urlDb)

所以Android有:
httpPost.setEntity(新的UrlEncodedFormEntity(参数,“utf-8”)
在Php中,我有:
header('Content-Type:application/json;charset=utf-8')(不知道这是否重要)


这是全部..ty全部,需要帮助

对于
htmlentities
尝试您所做的操作,请添加您如何尝试的代码。另外,请分享您正在使用的确切PHP版本。另外,请发布您从Android应用程序获得的JSON字符串。如何在PHP中处理JSON字符串?请同时显示该代码。如果此时的
$v
已经错误,请检查POST请求附带的字符编码。你需要知道这一点。看起来它不是UTF-8,但你对待它就像。也许是Windows-1252或ISO-8859-1?我是如何在android中写这篇文章的。你的android代码并没有告诉你字符编码。您使用哪种字符编码来处理由Android代码处理的数据?请在你的问题中加上这个。您的PHP版本和(未显示)
htmlentities
示例使我假设字符编码为ISO-8859-1。在PHP中处理数据时,请使用它而不是UTF-8。例如,
var_转储(utf8_编码($v))显示正确的字符?你能更好地解释我使用PHP Designer 7键入代码的原因吗?但是当我需要更改代码的编码时,我使用
notepad++
。它的功能类似于ANSI中的
编码的
UTF-8中的
编码。你也可以用谷歌搜索所有特殊字母,并根据下一个例子对它们进行编码:空格编码为 ;a编码为à;您可以在那里找到它们:构造函数UrlEncodedFormEntity(List,Charset)是undefined@Atomico好的,新的UrlEncodedFormEntity(参数“UTF-8”)
怎么样?应该根据android docs@Atomico正常运行,那么,您如何查看结果?
pap��。。。我快疯了
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
<?php
header('Content-Type: application/json; charset=utf-8');
print_r($_POST);