php - utf8 表示为普通文本

标签 php utf-8 utf

$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 不起作用以及如何处理修复它?

最佳答案

字符串文字和文件中的文本不等效。 $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); 

关于php - utf8 表示为普通文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13890370/

相关文章:

java - 如何创建套接字以接收文本和图像

php - .html 与 .php |区别,当我在两种扩展类型中编写 php 时

php - 转义 SED 命令

java - 使用 DOM 创建 XML 后, header 包含 UTF-8 ?

JavaScript 代码翻译成中文并给出 VM180 :1 Uncaught SyntaxError

utf-8 - UTF-16 有什么意义?

php - SQL JOIN 返回每行 id 错误的查询

php - MySQL/PHP 基于字段对行进行排序

html - Mechanize gem : get html from other site => response html encoding issue

php - UTF-8 编码仍然错误输出