Python 3.x 如何从É;ph和xC3©;mè;回复至É;ph&xE9;mè;你在蟒蛇3号吗?
我尝试了各种编码/解码组合,使用“代理程序”和“代理场景”选项,但都没有效果。我不确定这是什么格式(它甚至可能是Autoit中的一个bug),但我知道事实上信息就在那里,因为至少有一个在线utf解码器是正确的。在在线转换器网站上,我将文件指定为utf8,输出指定为utf16,输出与预期一致 我的问题是在文件读取期间。我通过在open()的选项中指定encoding='utf-8'解决了这个问题Python 3.x 如何从É;ph和xC3©;mè;回复至É;ph&xE9;mè;你在蟒蛇3号吗?,python-3.x,utf-8,character-encoding,Python 3.x,Utf 8,Character Encoding,我尝试了各种编码/解码组合,使用“代理程序”和“代理场景”选项,但都没有效果。我不确定这是什么格式(它甚至可能是Autoit中的一个bug),但我知道事实上信息就在那里,因为至少有一个在线utf解码器是正确的。在在线转换器网站上,我将文件指定为utf8,输出指定为utf16,输出与预期一致 我的问题是在文件读取期间。我通过在open()的选项中指定encoding='utf-8'解决了这个问题 我的问题是在文件读取期间。我通过在open()的选项中指定encoding='utf-8'解决了这个问
我的问题是在文件读取期间。我通过在open()的选项中指定encoding='utf-8'解决了这个问题 这个问题被称为,如果您有一个用编码的文本流,并且您用(它是的超集)对其进行解码,那么您的特定情况就会发生 因此,正如您已经看到的,您必须使用UTF-8来解码这个文件,而不是使用默认的Python编码(在您的例子中,它似乎是Windows-1252)
让我们看看为什么在您的示例中会出现这些特定的乱码字符,即:
- É在É的地方
- é在…的地方
- è在的地方
11000011 10001001
另一方面,Windows-1252是8位编码,也就是说,它将其字符集的每个字符编码为8位,即一个字节
因此,如果现在使用Windows-1252解码位序列11000011 10001001
,则Windows-1252将其解释为两个1字节代码,每个代码表示一个单独的字符,而不是一个2字节代码表示一个字符:
- 第一个字节
(11000011
十六进制)恰好是字符的Windows-1252代码(Unicode代码点U+00C3)C3
- 第二个字节
(十六进制中的10001001
)恰好是字符‰(Unicode代码点U+2030)的Windows-1252代码89
让我们看看为什么在您的示例中会出现这些特定的乱码字符,即:
- É在É的地方
- é在…的地方
- è在的地方
11000011 10001001
另一方面,Windows-1252是8位编码,也就是说,它将其字符集的每个字符编码为8位,即一个字节
因此,如果现在使用Windows-1252解码位序列11000011 10001001
,则Windows-1252将其解释为两个1字节代码,每个代码表示一个单独的字符,而不是一个2字节代码表示一个字符:
- 第一个字节
(11000011
十六进制)恰好是字符的Windows-1252代码(Unicode代码点U+00C3)C3
- 第二个字节
(十六进制中的10001001
)恰好是字符‰(Unicode代码点U+2030)的Windows-1252代码89