将字符串从Latin-1转换为UTF-8并返回Latin-1

时间:2016-08-14 05:52:37

标签: python

系统(不受我控制)发送$lookup编码的字符串(例如Öland),我可以将其转换为latin-1但不返回utf-8

考虑以下代码:

latin-1


这是输出:

Öland
b'\xd6land'   

现在,我如何模仿系统? 显然text = '\xc3\x96land' # This is what the external system sends iso = text.encode(encoding='latin-1') # this is my best guess print(iso.decode('utf-8')) print(u"Öland".encode(encoding='latin-1')) 不是'\xc3\x96land'

2 个答案:

答案 0 :(得分:0)

如果您的外部系统将其发送给您,那么您应首先对其进行解码而不是对其进行编码,因为它是以编码方式发送的。

你不必编码编码!!

hey=u"Öland".encode('latin-1') print hey

提供类似?land

的输出

print hey.decode('latin-1') 提供类似Öland

的输出

答案 1 :(得分:0)

原来外部系统已经在utf-8中发送数据了。 现在正好转换字符串就像这样:

#!/usr/bin/env python3.4
# -*- coding: utf-8 -*-

text = '\xc3\x96land'
encoded = text.encode(encoding='raw_unicode_escape')
print(encoded)
utf8 = encoded.decode('utf-8')
print(utf8)

mimic = utf8.encode('utf-8', 'unicode_escape')
print(mimic)

输出

b'\xc3\x96land'
Öland
b'\xc3\x96land'

感谢您的支持!