2

PHP を使用して、タブ区切りの CSV ファイルとパイプ区切りの TXT ファイルを読み込んでいます。残念ながら、文字 (表示) がまったく同じであっても、文字列比較が機能しません。隠し文字を確実にクリーンアップするためにトリムを使用し、文字列への型キャストも試みました。

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) "低支出 ($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 はサポートされているエンコーディングの 1 つであるため、php ini で有効にすると準備完了です。

于 2012-12-07T05:03:21.497 に答える