0

我目前正在通过 web 服务将信息从 Android 发送到 PHP 中的一个函数,该函数将该数据发送到数据库。

虽然,如果我的单词中有重音,比如名字,我会从 PHP 收到这个错误:

不正确的字符串值:第 1 行的列 'firstname' 的 '\xE1\xE1mos ...'

这些名字可能有口音,例如:António、João 等。

在 PHP 函数中,在插入数据库之前,我这样做没有成功:

$db->set_charset('utf8');
$query = $db->prepare("SET NAMES 'utf8';"); 
$query->execute();

如果我发送的数据不带任何口音,那么服务就可以完美运行。

编辑:使用解决utf8_encode(variable).

4

2 回答 2

2

在将数据发送到 Android 中的 WebServices 时,请尝试对字符串进行 URL 编码,然后再将它们放入 URL/表单数据中,例如:

// ...
String encodedName = URLEncoder.encode(name, Http.UTF_8);
// use encodedName instead of name to pass as parameters to the webservices

在PHP端,在使用参数之前,使用urldecode函数。

$name = urldecode ($_GET['my_param']);

并继续使用数据库中的编码。此外,检查您的表是否已使用 UTF_8 排序规则创建。

于 2013-10-30T14:57:54.727 回答
1

仅指定连接的编码是不够的。您需要将表和数据库的字符集更改为 utf-8。

因此,请执行以下操作

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE tbl_name CONVERT TO CHARACTER SET "utf-8" COLLATE utf8_general_ci;

于 2013-10-30T14:50:21.027 回答