Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中将UTF-16LE转换为UTF-8_Php_Encoding_Iconv - Fatal编程技术网

在php中将UTF-16LE转换为UTF-8

在php中将UTF-16LE转换为UTF-8,php,encoding,iconv,Php,Encoding,Iconv,我使用了iconvphp函数,但有些字符无法正确转换: ... $s = iconv('UTF-16', 'UTF-8', $s); ... $s = iconv('UTF-16//IGNORE', 'UTF-8', $s); ... $s = iconv('UTF-16LE', 'UTF-8', $s); ... $s = iconv('UTF-16LE//IGNORE', 'UTF-8', $s); ... 我也尝试了mb\u convert\u编码功能,但无法解决我的问题 示例文本文件:

我使用了
iconv
php函数,但有些字符无法正确转换:

...
$s = iconv('UTF-16', 'UTF-8', $s);
...
$s = iconv('UTF-16//IGNORE', 'UTF-8', $s);
...
$s = iconv('UTF-16LE', 'UTF-8', $s);
...
$s = iconv('UTF-16LE//IGNORE', 'UTF-8', $s);
...
我也尝试了
mb\u convert\u编码
功能,但无法解决我的问题

示例文本文件:9px.ir/utf8-16LE.rar

iconv

您可以使用它将编码从
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.');
}

我只是想知道中可用的所有代码点是否都在中可用。但我认为这应该适合你的情况


编辑:我无法在自己的盒子上重现该问题,但在上一天,我遇到了以下通知:

注意:iconv()[function.iconv]:错误的字符集,不允许在

看起来并非所有的
iconv
版本都能将
UTF-16LE
转换为
UTF-8

它可能是一种变通方法,至少在本例中是这样():


您应该在函数的第二个参数中使用
//TRANSLIT
//IGNORE
,它表示输出字符集。你在第一个论点中用错了


请参阅

上的更多详细信息和示例。字符串是一个阿拉伯语句子,大约一半的句子字符没有转换。@ali mzm:无法复制,该文件适用于上面的代码示例。@ali mzm:看起来并非所有iconv版本都支持此功能,可能您遇到了此错误@ali mzm:我添加了一个
mb\u convert\u编码
示例,该示例与
iconv
相同。不,我没有得到错误。我得到一个字符串,有些字符转换正确,有些字符转换不正确。@ali mzm:您使用的是
//translatit
还是
//IGNORE
?如果是这样,请不要这样做,除非你已经找到了原因。如果我尝试使用
iconv
mb\u convert\u编码
和您的数据,我无法重现问题。查看此演示,其中包含您的数据-您是否在输出中也看到了您的问题?
$result = mb_convert_encoding($str , 'UTF-8' , 'UTF-16LE');