Android加PHP特殊字符

时间:2013-10-30 14:28:02

标签: php android special-characters

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

虽然,如果我的名字中有重音符号,我会从PHP收到此错误:

  

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

名字可以有重音符号,例如: António,João等。

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

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

如果我发送没有任何重音的数据,该服务将完美运行。

修改:使用utf8_encode(variable).

解决

2 个答案:

答案 0 :(得分: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合并创建。

答案 1 :(得分: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;