我使用iconv PHP函数,但有些字符无法正确转换:
... $s = iconv('UTF-16','UTF-8',$s); ... $s = iconv('UTF-16//IGNORE',$s); ... $s = iconv('UTF-16LE',$s); ... $s = iconv('UTF-16LE//IGNORE',$s); ...
我也尝试mb_convert_encoding函数,但无法解决我的问题.
示例文本文件:9px.ir/utf8-16LE.rar
iconv
supports the
原文链接:https://www.f2er.com/php/133670.htmlUTF-16LE
encoding.
您可以使用它将UTF-16LE的编码转换为UTF-8:
$result = iconv($in_charset = 'UTF-16LE',$out_charset = 'UTF-8',$str); if (false === $result) { throw new Exception('Input string could not be converted.'); }
我只是想知道UTF-16LE
中可用的所有代码点是否在UTF-8
中可用.但我认为这应该适合您的情况.
编辑:我无法在自己的盒子上重现问题,但在another box我遇到了这个通知:
Notice: iconv() [function.iconv]: Wrong charset,conversion from
UTF-16LE' to
UTF-8′ is not allowed in …
看起来并非所有iconv版本都能将UTF-16LE转换为UTF-8.
这可能是使用mb_convert_encoding
Docs的变通方法,至少在这种情况下(Demo):
$result = mb_convert_encoding($str,'UTF-16LE');