我正在使用PDO在PHP中执行查询。问题是当通过phpMyAdmin添加带重音(“é”,“è”,“ô”等等)的字符并在PHP中检索它时,它会显示奇怪的字符。当通过查询添加重音时,它会被存储为一个奇怪的字符('é'将是'Ã''),但它会正确显示。
我在MySQL中使用的字符集是utf8_general_ci
。我的PHP字符集设置为UTF-8(没有BOM)。当我执行如下查询时:
SELECT ... WHERE DataName LIKE '%é%' ...
如果数据已通过phpMyAdmin添加并且未设置为'é',则无效。
即使我们通过phpMyAdmin添加数据并在phpMyAdmin中显示为“é”,我也想知道如何使这项工作。
答案 0 :(得分:0)
确保为PDO和MySQL之间的所有通信建立UTF8
$handle = new PDO("mysql:host=localhost;dbname=dbname",
'username', 'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
答案 1 :(得分:0)
我遇到了同样的问题。我的批处理文件初始化了输入带重音的单词表,但我的phpmyadmin显示了一个奇怪的数字。但是当我在phpmyadmin中更改它时,它被正确保存,当我导出到批处理时也是正确的(加载奇怪图的同一批次)
当我使用Jedit编辑器而不是Notepad时,我喜欢这个问题。由于某种原因,记事本将奇怪的数字转换为重音。
知道这个问题解决方案很简单:
1-使用latin1由数据库创建:
DROP DATABASE IF EXISTS mydb
;
创建数据库mydb
默认字符集latin1 COLLATE latin1_swedish_ci;
2-检查批处理文件以输入正确的重音
3-在html标题上使用常规声明:META charset =" utf-8"