【发布时间】:2012-01-04 01:13:38
【问题描述】:
我的 Android 应用通过 HTTP Post 与 PHP 服务器通信。 我在 HTTP 请求中添加以下参数:
nameValuePairs.add(new BasicNameValuePair("text", message));
message 是一个字符串,包含符号 €
在服务器上 PHP 正在运行并获取请求。 不幸的是,€符号自动转换为?象征。 所有其他符号都像“ä, ü, $, ß
在 Android 上我没有设置编码:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://server.com/test.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
在 PHP 站点上,我也没有指定任何内容。 代码如下:
<?php
mysql_connect("blablaost.com", "blabla", "blabla") or die(mysql_error());
mysql_select_db("asfd") or die(mysql_error());
$mysqldate = gmdate( 'Y-m-d H:i:s');
$language = (int) $_REQUEST['language'];
mysql_query("blabla ... .$_REQUEST['text']. ")
or die(mysql_error());
mysql_close();
?>
$_REQUEST['text'] 包含€,它给了我一个?
【问题讨论】:
-
你能检查一下双方正在发送/期望的编码吗?
-
在 php 端使用 urldecode() 和 rawurldecode() 有什么运气吗?你如何检查结果?
-
看来PHP服务器的输出/输入编码是ISO-8859-1。我通过在 mySQL DB 中编写它来检查它。但这不是错!我不确定应该如何处理 urldecode()..
-
urldecode() 和 rawurldecode() 不是正确的方法。我通过 HTTP post 发送值。它不附加在 URL 中
-
在发布 url 编码数据时需要进行 URL 编码,因为您声明要对数据进行 url 编码。