使用 php 我解析一个包含 unicode 字符的文本文件,例如
只需读入文件而无需任何进一步的编码/解码笑脸被解析,然后 json_encoded 和输出是\u00f0\u009f\u0098\u008d
一个 javascript 文件获取 .json 数据并将 4 个转义字符输出为ð
查看一个 unicode 表,该符号被称为“SMILING FACE WITH HEART-SHAPED EYES”并且具有 unicode 编号U+1F60D
(128525)
在这种情况下,有没有办法将 4 个代码单元转换为 unicodenumber 或理想情况下转换为适当的 html 编码方式😍
查看转换,utf 8 代码单元看起来相似(F0 9F 98 8D 0A 0A),但我无法重现我得到的 4 个转义单元,所以我什至不知道我在看什么
更新:我犯了一个错误并编辑了第二段:\u00f0\u009f\u0098\u008d
已经是 json_encode(); 的结果
这是从文件中读取数据的基本功能,查看笑脸的源代码是“硬编码”的,所以你真的看到了
function readLocalFile() {
$file_html = fopen('output.html', "r");
$html = "";
while(!feof($file_html)) {
$html .= fgets($file_html);
}
fclose($file_html);
// here I use regex to filter for specific tags, the result is an array
$cleanData = parseData($html);
saveToFile(json_encode($cleanData));
}
我刚刚创建了一个 dummy.html 与内容一样,这将返回正确的结果
\ud83d\ude0d
,在整个数据的上下文中,它仍然如上所述被破坏,很奇怪
我必须查看数据保存到的方式output.html
,这就是问题所在。我一直在看问题的错误部分,哦!
最后更新:终于找到错误了。它在 parseData-function 中,loadHTML 以某种方式混淆了内容,在这里找到了解决方案: PHP DOMDocument loadHTML not encoding UTF-8 correct