Utf 8 &#xC3©和其他代码

Utf 8 &#xC3©和其他代码,utf-8,utf8-decode,Utf 8,Utf8 Decode,我得到了一个满是这些代码的文件,我想把它“翻译”成普通字符(我的意思是一个完整的文件)。我怎么做 非常感谢您。看起来您最初有一个UTF-8文件,它被解释为8位编码(例如)和实体编码。我这样说是因为序列C3A9看起来像是一个非常合理的序列 您需要首先对其进行实体解码,然后再次进行UTF-8编码。然后,您可以使用类似于转换为您选择的编码的东西 要完成您的示例,请执行以下操作: é;将被解码为字节序列0xC3A9 二进制0xC3A9=11000011 10101001 第一个八位字

我得到了一个满是这些代码的文件,我想把它“翻译”成普通字符(我的意思是一个完整的文件)。我怎么做


非常感谢您。

看起来您最初有一个UTF-8文件,它被解释为8位编码(例如)和实体编码。我这样说是因为序列C3A9看起来像是一个非常合理的序列

您需要首先对其进行实体解码,然后再次进行UTF-8编码。然后,您可以使用类似于转换为您选择的编码的东西

要完成您的示例,请执行以下操作:

  • é;将被解码为字节序列0xC3A9
  • 二进制0xC3A9=11000011 10101001
  • 第一个八位字节中的前导110告诉我们这可以解释为UTF-8双字节序列。由于第二个八位组以10开头,我们正在寻找一些可以解释为UTF-8的东西。为此,我们取第一个八位组的最后5位,第二个八位组的最后6位
  • 所以,解释为UTF8,它是00011101001=E9=é()
您提到希望用PHP处理此问题,类似这样的东西可能会帮您:

 //to load from a file, use
 //$file=file_get_contents("/path/to/filename.txt");
 //example below uses a literal string to demonstrate technique...

 $file="&Précédent is a French word";
 $utf8=html_entity_decode($file);
 $iso8859=utf8_decode($utf8);

 //$utf8 contains "Précédent is a French word" in UTF-8
 //$iso8859 contains "Précédent is a French word" in ISO-8859

你到底是什么意思?在十六进制编辑器中打开文件时会看到什么?很抱歉我的解释不好。我的意思是,使用PHP的utf8_decode()函数,我可以显示实际值,但我需要将其更改为整个文件。怎么做?但是怎么改变整个文件呢?我的意思是,它是一个带有“公共”文本和编码序列的文件……如果这种技术对您的文件不起作用,我建议包含一个小的十六进制转储文件的相关示例。例如:Pré;cé;登特(这是一个法语单词)。在该文件中,存在没有重音的单词,但其他单词有(这就是问题所在,我需要将这些重音单词至少转换为UTF8,然后我可能会使用iconv或类似的东西)在您提供的字符串上是对Précédent的UTF-8编码-我不确定我是否看到了问题。让我换一种方式说:解码整个文件,并用html_entity_decode解码时出现的错误更新您的问题。如果不确定如何将文件加载到字符串中,请尝试$str=file\u get\u contents($my\u filename)