我使用PHP读取制表符分隔的CSV文件和管道分隔的TXT文件。不幸的是,即使字符(显示)完全相同,我也无法进行字符串比较。我使用trim来确保清理隐藏的字符,我甚至尝试将字符串转换为字符串。
Var转储显示它们明显不同但我不确定如何使它们相同?
// read in CSV file
$fh = fopen($mapping_date, 'r');
$mapping_data = fread($fh, filesize($mapping_date));
...
// use str_getcsv to put each line into an array
// get values out that I want to compare
$this_strategy = (string)trim($strategy_name);
$row_strategy = (string)trim($row3[_Strategy_Name]);
if($this_strategy == $row_strategy) { // do something }
var_dump($this_strategy);
Vardump:string(16)“Low Spend($ 0.2)”
var_dump($row_strategy);
Vardump:string(31)“低花费($ 0.2)”
无法理解我的生活如何使这项工作。
答案 0 :(得分:0)
看起来你有在UCS2中编码的数据库(假设它是MySQL)。 http://dev.mysql.com/doc/refman/5.1/en/charset-unicode-ucs2.html
您可以使用iconv来转换格式 - 但是该页面上的评论中有一个示例(但它不使用iconv - http://php.net/manual/en/function.iconv.php#49171)。我没有测试过它。
或者,将数据库字段编码更改为utf8_generic或ASCII或文件编码为什么?
编辑:找到你想要的实际PHP函数:mb_convert_encoding - UCS2是支持的编码之一,所以在php ini中启用它你就可以了。