首页 > 解决方案 > 将编码错误的字符串转换为utf8

问题描述

我有这个Τεστ - Test编码错误的字符串。

就是这个文本:Τεστ - Test它被重新打开并使用编码Western Windows-1252保存。 所以现在每当我在我的编辑器(Sublime)中打开这些文件时,我都需要重新打开编码来读取这些值。utf-8
utf-8

我需要使用 python 转换文本。我正在尝试这个:

import codecs

my_text = 'Τεστ - Test'
try1 = bytes(my_text, 'utf-8')
try2 = codecs.escape_decode(my_text)[0]
try3 = str(my_text.encode('unicode_escape').decode('windows-1252'))
//try1 :  b'\xc3\x8e\xc2\xa4\xc3\x8e\xc2\xb5\xc3\x8f\xc6\x92\xc3\x8f\xe2\x80\x9e - Test'
//try2 :  b'\xc3\x8e\xc2\xa4\xc3\x8e\xc2\xb5\xc3\x8f\xc6\x92\xc3\x8f\xe2\x80\x9e - Test'
//try3 : \xce\xa4\xce\xb5\xcf\u0192\xcf\u201e - Test

我正在尝试转换此编码字符串,以便使用 decode('utf-8') 获得正确的值。

try1 = try1.decode('utf-8')
try2 = try2.decode('utf-8')

但我又得到Τεστ - Test了。

标签: python

解决方案


以下对我有用(在 Python 3 中):

s = "Τεστ - Test"
assert s.encode("cp1252").decode("utf-8") == "Τεστ - Test"

因此,第一次调用 encode 使用 将其编码为字节字符串cp1252,然后使用 解码该字节列表,utf-8从而得到预期的 unicode 字符串。


推荐阅读