Python:将字符串从UTF-8转换为Latin-1

时间:2010-11-28 23:37:34

标签: python encoding

我觉得在这里试图用Python 2.5改变编码

我有XML响应,我编码为UTF-8:response.encode('utf-8')。这很好,但使用此信息的程序不喜欢这种编码,我必须将其转换为其他代码页。真实的例子是我使用ghostscript python模块将pdfmark数据嵌入到PDF文件中 - 最终结果是Acrobat中的字符错误。

我在'utf-8'和'latin-1'之间使用.encode().decode()进行了多次组合,这让我发疯,因为我无法输出正确的结果。

如果我将字符串输出到.encode('utf-8')的文件,然后将此文件从UTF-8转换为CP1252(也称为latin-1),即 iconv.exe 并嵌入数据一切都很好。

基本上有人可以帮我转换,即字符á,这是UTF-8编码为十六进制:C3 A1到latin-1为十六进制:E1

提前致谢

4 个答案:

答案 0 :(得分:19)

而不是.encode('utf-8'),请使用.encode('latin-1')

答案 1 :(得分:5)

data="UTF-8 data"
udata=data.decode("utf-8")
data=udata.encode("latin-1","ignore")

应该这样做。

答案 2 :(得分:3)

您能否提供有关您尝试做的更多详情?通常,如果您有一个unicode字符串,则可以使用encode将其转换为具有适当编码的字符串。例如:

>>> a = u"\u00E1"
>>> type(a)
<type 'unicode'>
>>> a.encode('utf-8')
'\xc3\xa1'
>>> a.encode('latin-1')
'\xe1'

答案 3 :(得分:0)

如果之前的答案无法解决您的问题,请检查无法正确打印/转换的数据来源。

在我的情况下,我使用json.load通过不使用encoding="utf-8"错误地从文件中读取数据。尝试将结果字符串解码/编码为latin-1只是没有帮助......