Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “口音”éè。。。等“;未正确显示_Php_Sql_Pdo - Fatal编程技术网

Php “口音”éè。。。等“;未正确显示

Php “口音”éè。。。等“;未正确显示,php,sql,pdo,Php,Sql,Pdo,我使用PDO在PHP中执行查询。问题是,当通过phpMyAdmin添加带有重音的字符(“é”、“è”、“ô”等)并在PHP中检索时,它会显示奇怪的字符。通过查询添加重音时,会将其存储为一个奇怪的字符(“é”将是“Ô)),但会正确显示 我在MySQL中使用的字符集是utf8\u general\u ci。我的PHP字符集设置为UTF-8(无BOM)。当我执行如下查询时: SELECT ... WHERE DataName LIKE '%é%' ... 如果数据是通过phpMyAdmin添加的,

我使用PDO在PHP中执行查询。问题是,当通过phpMyAdmin添加带有重音的字符(“é”、“è”、“ô”等)并在PHP中检索时,它会显示奇怪的字符。通过查询添加重音时,会将其存储为一个奇怪的字符(“é”将是“Ô)),但会正确显示

我在MySQL中使用的字符集是
utf8\u general\u ci
。我的PHP字符集设置为UTF-8(无BOM)。当我执行如下查询时:

SELECT ... WHERE DataName LIKE '%é%' ...
如果数据是通过phpMyAdmin添加的,并且未设置为“Ã俎”,则该选项不起作用


我想知道,即使我们通过phpMyAdmin添加数据并在phpMyAdmin中显示为“é”,如何实现这一点。

确保为PDO和MySQL之间的所有通信建立UTF8

$handle = new PDO("mysql:host=localhost;dbname=dbname", 
    'username', 'password',  
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

我也有同样的问题。我的批处理文件初始化了带有重音的表输入单词,但是我的phpmyadmin显示了一个奇怪的数字。但是当我在phpmyadmin中更改它时,它被正确保存,并且当我导出到批处理时也正确(加载奇怪数字的同一批处理) 当我用Jedit编辑器代替记事本时,我喜欢这个问题。出于某种原因,记事本将奇怪的数字转换为重音。 知道了这个问题,解决方法很简单:
1-由使用拉丁语1的数据库创建:
删除数据库(如果存在)
mydb

创建数据库
mydb
默认字符集latin1校对latin1\u swedish\u ci;
2-检查批处理文件以输入正确的重音

3-使用了html头上的常规声明:META charset=“utf-8”

您的Web服务器在其HTTP头中返回了什么编码?此外,您是否尝试过使用
utf8\u decode()
/
utf\u encode()
?我不知道头中的编码,但我的html页面设置为utf-8(在META中)。但是,即使在我进行查询时(在我的php脚本中,在服务器上,没有向用户发送头),问题也是一样的。我必须将“É”与“E”进行比较,才能让它起作用。所以我不认为问题与头有关(或者只与头有关)。utf8\u general\u ci不是字符集,而是排序规则。排序规则告诉数据库如何对数据进行排序。在一些校勘中,顺序是1,10,2,3,30,4,5。。在其他情况下,可以是1,2,3,4,5,6,…10,…20。utf8\u general\u ci似乎是“utf-8感知”排序规则,因此将按照某种抽象的方式对文本进行正确排序。如果将连接集中的数据保存为utf-8,则可能应该将连接设置为utf-8。我还在连接字符串中添加了“charset=utf-8”,但这并没有解决问题。它向我显示了一个错误:未定义的类常量“MYSQL\u ATTR\u INIT\u COMMAND”。我已经研究过了,解决办法是设置“;“dbname”后面的charset=UTF-8。但即使是charset=UTF-8也不能解决我的问题。