【问题标题】:utf8 representation as normal textutf8 表示为普通文本
【发布时间】:2012-12-03 03:28:15
【问题描述】:
$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

为什么如果从文件iconv 中读取字符串\xd0\xa2\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb0 不起作用以及如何解决?

【问题讨论】:

  • 检查服务器设置。 (php.ini 和 mbstring)

标签: php utf-8 utf


【解决方案1】:

字符串文字和文件中的文本不等价。 $text 已经是 utf-8 (Тайна) 并且 iconv 对它没有任何作用。这是因为您使用escape sequences 将实际的二进制值放入字符串中。文件\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); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-01
    • 2012-02-14
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多