$text = "\xd0\xa2\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb0";
$text = iconv('UTF-8', 'UTF-8//IGNORE', $text);
var_dump($text); //Тайна - good
$text = file_get_contents('log.txt');
$text = iconv('UTF-8', 'UTF-8//IGNORE', trim($text));
var_dump($text); // \xd0\xa2\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb0 - bad
为什么如果字符串\xd0\xa2\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb0
已从文件中读取iconv
不起作用,如何解决?
字符串文字和文件中的文本不等效。$text
已经是 utf-8 (Тайна) 并且 iconv 对它没有任何作用。这是因为你使用转义序列将实际的二进制值放入字符串中。与文件中的数据\xd0\xa2\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb0
未转义,因为它是从文件读取并存储在变量中,因此它不是字符串文字。
尝试这个来转换数据
$text = file_get_contents('log.txt');
$text = str_replace('\x', '', trim($text));
$text = pack('H*', $text);
var_dump($text);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)