1

我有 csv 文件以 unicode 编码,当我使用 fgetcsv 或 fgets 读取它并尝试在 PHP 中将数字字符串用作整数时,只有字符串的第一个字符被转换为数字,即

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

如何正确转换这些 un​​icode 数字字符串?

我在 PHP 中使用从 unicode 到其他字符集的转换函数没有成功!

我知道的唯一方法是使用简单的文本编辑器,如记事本或记事本++,并将文件格式转换为 ANSI csv。

谢谢你的帮助。

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 回答