gpt4 book ai didi

python-3.x - 如何在 Python3 中从 Éphémère 到 Éphémère?

转载 作者:行者123 更新时间:2023-12-02 00:44:46 25 4
gpt4 key购买 nike

我尝试了各种带有选项“surrogatepass”和“surrogateescape”的编码/解码组合,但均无济于事。我不确定这是什么格式(它甚至可能是 Autoit 中的错误),但我确实知道信息在那里,因为至少有一个在线 utf 解码器是正确的。在在线转换器网站上,我将文件指定为 utf8,将输出指定为 utf16,结果符合预期。

最佳答案

此问题称为 mojibake , 如果您有一个用 UTF-8 编码的文本流,则会出现您的特定情况, 你用 Windows-1252 解码它(它是 ISO 8859-1 的超集)。

所以,正如您已经知道的那样 found out ,您必须使用 UTF-8 解码此文件,而不是使用 Python 的默认编码(在您的情况下似乎是 Windows-1252)。


看看你的例子中为什么会出现这些特定的乱码,即:

  • 在 É 的地方 É
  • É 在 é 的地方
  • è 在 è 的位置

下表总结了正在发生的事情:

Code table

É、é、è均为非ASCII字符,采用UTF-8编码为2字节长码。

例如,É 的 UTF-8 编码为:

11000011 10001001

另一方面,Windows-1252是8位编码,即将其字符集中的每个字符编码为8位,即一个字节。

因此,如果您现在使用 Windows-1252 解码位序列 11000011 10001001,则 Windows-1252 会将其解释为两个 1 字节代码,每个代码代表一个单独的字符,而不是 2-表示单个字符的字节码:

  • 第一个字节11000011(十六进制的C3)恰好是字符Ã(Unicode代码点U)的Windows-1252代码+00C3).
  • 第二个字节10001001(十六进制的89)恰好是字符(Unicode码点U)的Windows-1252编码+2030).

您可以查找这些映射here .

所以,这就是为什么您的解码呈现 É 而不是 É 的原因。其他非 ASCII 字符 é 和 è 同上。

关于python-3.x - 如何在 Python3 中从 Éphémère 到 Éphémère?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44536896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com