在PHP中,如何正确地将unicode数字字符串转换为数字?

时间:2012-12-19 16:50:32

标签: php string csv unicode ansi

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

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

如何正确转换这些unicode数字字符串?

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

将其转换为其他编码,例如UTF-8。

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

你的字符串实际上是这样的(手工构造的UTF-16LE):

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

因此,php会读取第一个2,然后看到NUL这不是一个数字,你得到2

BTW,这里没有处理LE BOM(\xFF\xFE)所以请显示完整的代码,我会看到。