2

我正在使用 PHP 读取制表符分隔的 CSV 文件和管道分隔的 TXT 文件。不幸的是,即使字符(看起来)完全相同,我也无法进行字符串比较。我使用修剪来确保清理隐藏的字符,甚至尝试将类型转换为字符串。

Var dump 显示它们明显不同,但我不确定如何使它们相同?

// 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) "低支出 ($0.2)"

var_dump($row_strategy);

Vardump: string(31) "低支出 ($0.2)"

无法弄清楚我的生活如何使这项工作。

4

1 回答 1

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 中启用它,你很高兴。

于 2012-12-07T05:03:21.497 回答