2011-12-06 26 views
1

我有一些mysql数据库,其中包含一些中文关键字,我需要使用PHP在CSV文件中对某些关键字进行比较。对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文件我有使用记事本++来尝试更改编码,但仍然无法正常工作。

非常感谢。

编辑:我在Windows 7

编辑:,然后将溶液 它可能会帮助一个人在那里,我发现我的问题是由BOM引起的被包含在从CSV文件字符串。 我设法通过使用该功能

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

回答

0

我有限的Windows体验,因为我在Linux上平时工作删除它,但我已经在处理不同的字符集(编码)项目集成工作。

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

谢谢,我会试试看。 – Jon