口音“é,è...等”未正确显示

时间:2012-04-02 12:49:54

标签: php sql pdo

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

我在MySQL中使用的字符集是utf8_general_ci。我的PHP字符集设置为UTF-8(没有BOM)。当我执行如下查询时:

SELECT ... WHERE DataName LIKE '%é%' ...

如果数据已通过phpMyAdmin添加并且未设置为'é',则无效。

即使我们通过phpMyAdmin添加数据并在phpMyAdmin中显示为“é”,我也想知道如何使这项工作。

2 个答案:

答案 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"