àèìòù;在Android中->;PHP->;神谕
Android应用程序有一个字符串àèìòù;在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中,我将字符串放在地图中:
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);