我有一个mysql数据库,有一些中文关键字,我需要使用PHP对CSV文件中的一些关键字进行比较。
我似乎有一个编码的问题,当我比较2个关键字我知道是相同的(与中文字符)的脚本说他们是不同的。
我在数据库脚本的开头使用"SET NAMES utf8"。表中keywords字段的排序规则为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
编辑:添加溶液它可能会帮助那里的人,我发现我的问题是由BOM被包含在csv文件的字符串上引起的。我设法通过使用这个函数
来删除它 private function rmBOM($string) {
if(substr($string, 0,3) == pack('CCC',0xef,0xbb,0xbf)) {
$string=substr($string, 3);
}
return $string;
}
我在Windows上的经验有限,因为我通常在Linux上工作,但我曾在处理不同字符集(编码)的集成项目中工作过。
- 确保数据库连接是UTF模式。请看一下这个文件。
- 确保csv文件是UTF格式。你可以使用iconv()函数强制转换。