python - 将编码错误的字符串转换为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 3 中):
s = "Τεστ - Test"
assert s.encode("cp1252").decode("utf-8") == "Τεστ - Test"
因此,第一次调用 encode 使用 将其编码为字节字符串cp1252
,然后使用 解码该字节列表,utf-8
从而得到预期的 unicode 字符串。
推荐阅读
- exchangelib - 有没有办法每秒使用 exchangelib 将电子邮件复制到服务器上?
- python - 使用 ffmpeg-python 为视频添加多个字幕
- javascript - javascript eventListener 似乎不起作用
- java - OkHttp如何跳过FormBody表单元素编码
- flutter - 为什么 onTap 和其中的函数在 InkWell 中不起作用?
- c++ - cpprestsdk如何使用MARCO定义常量
- sql - LAG 函数只取前一个日期而不是按确切顺序运行
- html - 如何在 iframe 中创建书签链接?
- python - 如何将熊猫系列变成矩阵?
- mongodb - 猫鼬搜索大小写字母