【发布时间】:2014-01-12 18:04:54
【问题描述】:
我编写了一个 Android 应用程序,该应用程序管理要在 MySQL 数据库(在服务器上)中存储和删除的数据。每当在智能手机上使用特殊字符(“ä”、“ü”、...)时,符号都会被错误地转换。
在日志中,我可以看到“元音变音”(例如“ä”)已正确传输。我还在我的 php 文件中使用“SET NAMES 'UTF-8'”,请参见此处:
function connect()
{
....
// Connecting to mysql database
$con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");
// Selecting database
$db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
return $con;
}
如果我通过 Postman 发起请求,我可以添加带有特殊字符的单词,例如“TÄST”,json 响应如下所示:
{"catId":"35","category":"T\u00c4ST"}
所以单词很好地转换为 UTF-8。但是如果我通过智能手机添加一个项目,来自服务器的响应(检索添加的项目)如下所示:
{"catId":"37","category":"T?ST"}
在我的代码中,我为 JSON 对象添加参数的位置是(注意“名称”是编辑文本字段的字符串内容):
List<NameValuePair> params = new ArrayList<NameValuePair>();
...
params.add(new BasicNameValuePair("category", catName));
之后发送 HTTPRequest:
JSONObject json = jsonParser.makeHttpRequest(url_dest, "POST", params);
如果我打印出参数,“Täst”这个词是可见的......但不幸的是,我无法检查哪个 json 字符串到达服务器(由于我的 php 知识不好)。那么问题出在哪里?在我的 android 应用程序中还是在服务器上的 php 文件中?
我必须以任何方式对传出的 json 对象进行编码吗?
非常感谢您的帮助。
【问题讨论】:
标签: java php android json utf-8