我有用unicode编码的csv文件,当我用fgetcsv或fgets读取它时,尝试在PHP中使用数字字符串作为整数,只有字符串的第一个字符转换为数字,即
$str='2012';
$num=$str + 0; OR $num=(int)$str;
echo $num;
results -> 2
如何正确转换这些unicode数字字符串?
我没有成功使用PHP中的转换函数从unicode到其他字符集!
我知道的唯一方法是使用简单的文本编辑器,如记事本或记事本++,并将文件格式转换为ANSI csv。
感谢您的帮助。
答案 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
)所以请显示完整的代码,我会看到。