在Python3中将UTF8字符串转换为CP860

2024-06-23 19:59:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python3中有一些字符串,它们应该是CP860(葡萄牙语),但我认为它们是在UTF-8中显示的。有人能告诉我如何在python3中将UTF-8字符串转换成CP860字符串吗?你知道吗

字符串是“proteçÃo para bebê”,应该是“de proteço para bebè”

我尝试了几个代码,但没有工作,分享其中一个在这里。你知道吗

>>> a = "Cercadinho e grade de proteção para bebê".encode('cp860')

>>> print(a)

b'Cercadinho e grade de prote\x87\x84o para beb\x88' ==> Result

结果是错误的,它应该在CP860(de proteção para bebê)中,如上所述


Tags: 字符串代码de中将python3utfencodegrade
1条回答
网友
1楼 · 发布于 2024-06-23 19:59:00

你看到的是双重编码的文本,首先是UTF-8,然后是拉丁语-1。你知道吗

>>> s = 'proteção para bebê'
>>> orig = s.encode('latin1').decode('utf-8')
>>> orig
'proteção para bebê'

您需要首先清理mojibake,然后您可以编码到cp860,如果您想这样做的话:

>>> cp860 = orig.encode('cp860')
>>> cp860
b'prote\x87\x84o para beb\x88'

注意,在python3中,编码文本的类型是bytes,而不是str,因此说您拥有或想要“utf-8 strings”或“cp860strings”并不是真正有意义的:有bytestrings(bytes),可以从特定编码(utf-8、cp860等)解码成str。你知道吗

相关问题 更多 >

    热门问题