我可能有一个简单的编码问题,但我无法弄明白。 我在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 ['地址']是英文的,则可以使用中文,但不是:p
编辑:
如果我回显$ _POST ['地址']它显示我输入的中文地址,这样部分就可以了,但是,如果我从数据库回显地址,它将如下所示:&# 34; 701 \ u53f0 \ u7063 \ u53f0 \ u5357 \ u5e02 \ u6771 \ u5340 \ u88d5 \ u8c50 \ u885775 \ u865f"
EDIT2:
当要求显示变量时,例如' char%&#39 ;;我得到了这个结果
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database latin1
character_set_filesystem binary
character_set_results utf8mb4
character_set_server latin1
character_set_system utf8
character_sets_dir c:\ wamp \ bin \ mysql \ mysql5.6.17 \ share \ charsets \
请帮忙!
事先感谢,
Q
答案 0 :(得分:1)
您是否将语言环境设置为“UTF-8”? 你有没有将你的mysql字符集设置为utf-8? 在mysql中,exec“显示变量如'%char%';它应该返回
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
答案 1 :(得分:0)
尝试设置页面本身的字符集(如果你还没有)。
header('Content-Type: text/html; charset=utf-8');
答案 2 :(得分:0)
原来在我用来测试我的php文件的表单上,编码是正确的,除了浏览器本身。虽然我将html文件保存为UTF-8,但我还是不明白为什么谷歌Chrome会将其编码为欧洲版。 无论如何,问题解决了。谢谢你的帮助,伙计=)