3
4

6 回答 6

2

这样做

DefaultHttpClient httpclient= new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://www.xxxxxxxx.com/thescript.php");
                Log.e("done 1st","its here");

                try
                {
                    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                    nameValuePairs.add(new BasicNameValuePair("name", Name.getText().toString()));
                    nameValuePairs.add(new BasicNameValuePair("sex",  Sex.getText().toString()));
                    nameValuePairs.add(new BasicNameValuePair("nationality",  Nationality.getText().toString()));

                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); //UPDATE HERE
                    HttpResponse response = httpclient.execute(httppost);
                    Log.e("done", String.valueOf(response));
                }
于 2013-09-30T07:14:55.030 回答
1

类型不应该是 varchar,因为它不接受 Unicode 字符。将其更新为 nvarchar!

就像 Andries 所说,排序规则也应该设置为 utf8_general_ci 或其他 Unicode 排序规则。

编辑:

所以,既然你在 MySQL v5.x 上,你应该有一个配置文件(比如 my.cnf)。你应该确保你没有使用你的超级用户来访问数据库。将此添加到您的配置文件中。

[mysqld]
init_connect='SET collation_connection = utf8_general_ci; SET NAMES utf8;'
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

这将触发任何连接以将 utf8_general_ci 用于任何连接。

重新启动 MySQL,如果 mysqld.log 没有返回任何错误,您应该重新启动!

于 2013-09-27T16:11:28.630 回答
1

我相信你的java代码是正确的。

在后端,尝试使用此代码:(如果您可以切换到 PDO)

$conn= mysql_connect($db_host,$db_uid,$db_pass, true) or die('could not connect');
mysql_select_db($db_name);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
mysql_set_charset('utf8', $conn); 

使用以下命令调试以了解编码:

<?php
$charset = mysql_client_encoding($conn);
echo "The current character set is: $charset\n";
?>

然后

以 root 身份执行以下命令:

ALTER DATABASE YOUR_DATABASE_ NAME CHARACTER SET utf8 COLLATE utf8_general_ci;
update mysql.proc set character_set_client = "utf8", collation_connection = "utf8_general_ci", db_collation = "utf8";

然后执行以下SO答案中的代码

于 2013-09-28T03:07:49.327 回答
0

您应该将表排序规则更改为 utf8_general_ci 或任何其他 unicode 排序规则。Latin1 不能代表阿拉伯文字。

于 2013-09-27T15:58:23.467 回答
0

我有这个问题长达一周的时间并搜索和搜索,@biraj 建议的解决方案是解决这个问题的唯一方法!无需更改数据库或在 php 中设置 UTF-8 或 .... 使用此

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));

这个问题永远消失了。

于 2017-08-23T08:57:29.957 回答
-1

您需要将正确的 (UTF-8) Charset 传递给 UrlEncodedFormEntity 构造函数。

于 2013-09-28T04:56:31.130 回答