编码MySQL,PHP和CSV文件

时间:2011-12-06 18:35:44

标签: php mysql encoding

我有一个带有一些中文关键字的mysql数据库,我需要使用PHP与CSV文件中的某些关键字进行比较。

我似乎对编码有问题,当我比较我知道的两个关键字(中文字符)时,脚本说它们是不同的。

我在数据库脚本的开头使用“SET NAMES utf8”。 表上关键字字段的排序规则是utf8_bin。

脚本上的

我也用过

mb_internal_encoding("UTF-8");
header('Content-Type: text/xml, charset=UTF-8; encoding=UTF-8');

我用

读取了CSV文件
    $data = fgetcsv($handle, 1000, ",")) !== FALSE

我的比较线就像这样

    $database_keyword == CSV_keyword

关于CSV文件,我使用notepad ++尝试更改编码,但仍无效。

非常感谢。

编辑:我在Windows 7上

编辑:添加解决方案 它可能会帮助那里的人,我发现我的问题是由csv文件中包含在字符串中的BOM引起的。 我设法通过使用此功能

删除它
    private function rmBOM($string) { 
        if(substr($string, 0,3) == pack('CCC',0xef,0xbb,0xbf)) { 
            $string=substr($string, 3); 
        } 
        return $string; 
    }

1 个答案:

答案 0 :(得分:0)

我在Windows上的经验有限,因为我经常在Linux上工作,但我曾参与处理不同字符集(编码)的集成项目。

  1. 确保数据库连接处于UTF模式。看看这个document
  2. 确保csv文件是UTF格式。您可以使用iconv()函数强制转换。
相关问题