数据库准备语句中的汉字

Chinese characters in database prepared statement

我可能有一个简单的编码问题,但我想不通。 我在 MySQL 数据库中有可以是英文或中文的地址,所以我使用了 utf8_unicode_ci 。我从数据库中检索我的汉字没有问题,但我不能在准备好的请求中使用汉字。

我解释一下: 如果我输入

$bdd= new PDO('mysql:host=localhost:3306; dbname=****;charset=utf8', 'root', '');   
$list_business = $bdd->query('SELECT * FROM business WHERE address LIKE N\'台灣台南市\' ');
$nb_business=$list_business->rowCount();

我会得到一个结果,因为其中一个地址包含“台湾台南市” 但是如果我尝试使用准备好的请求:

$list_business = $bdd->prepare('SELECT * FROM business WHERE address LIKE ? ');
$list_business->execute(array('%'.$_POST['address'].'%'));
$nb_business=$list_business->rowCount();

如果$_POST['address']是英文的就可以,中文的就不行:p

编辑:

如果我回显 $_POST['address'] 它会显示我输入的中文地址,所以这部分没问题,但是,如果我从数据库中回显地址,它将看起来像这样:“701\u53f0\u7063\u53f0\u5357\u5e02\u6771\u5340\u88d5\u8c50\u885775\u865f".

编辑 2:

当要求像 'char%' 这样的显示变量时;我得到了这个结果

character_set_clientutf8mb4

character_set_connection utf8mb4

character_set_database latin1

character_set_filesystem二进制

character_set_resultsutf8mb4

character_set_server latin1

character_set_systemutf8

character_sets_dir c:\wamp\bin\mysql\mysql5.6.17\share\charsets\

求求你帮忙!

先谢谢了,

Q

尝试设置页面本身的字符集(如果您还没有设置的话)。

header('Content-Type: text/html; charset=utf-8');

你的语言环境设置成"UTF-8"了吗? 您是否将 mysql 字符集设置为 utf-8? 在 mysql 中,exec "显示像 '%char%' 这样的变量;它应该 return

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

事实证明,在我用来测试 php 文件的表单上,除浏览器本身外,编码在任何地方都是正确的。我不明白为什么 Google Chrome 会将其编码为欧洲语言,尽管我将 html 文件保存为 UTF-8。 总之,问题解决了。谢谢你们的帮助,伙计们=)