1

Unicodeでエンコードされたcsvファイルがあり、fgetcsvまたはfgetsのいずれかでそれを読み取り、PHPで数値文字列を整数として使用しようとすると、文字列の最初の文字のみが数値にキャストされます。

$str='2012';
$num=$str + 0; OR $num=(int)$str;
echo $num;
results -> 2

これらのUnicode数値文字列を正しく変換するにはどうすればよいですか?

PHPでUnicodeから他の文字セットへの変換関数を使用することに成功しませんでした!

私が知っている唯一の方法は、メモ帳やメモ帳++などの単純なテキストエディタを使用して、ファイル形式をANSIcsvに変換することです。

ご協力いただきありがとうございます。

4

1 に答える 1

2

UTF-8などの他のエンコーディングに変換します。

$str = mb_convert_encoding( $str, "UTF-8", "UTF-16LE");

文字列は実際には次のようになります(手動で作成されたUTF-16LE):

 $str = "2\x000\x001\x002\x00";

したがって、phpは最初2に読み取り、次にNUL数値ではないものを確認し、を取得します2

ところで、LE BOMはここでは処理されない\xFF\xFEので()、完全なコードを表示してください。

于 2012-12-19T17:18:32.040 に答える