Python:将字符串从UTF-8转换为Latin-1
我在用Python 2.5处理编码问题时感到很困惑。
我有一个XML的响应内容,我把它编码成UTF-8:response.encode('utf-8')
。这样做没问题,但使用这些信息的程序不喜欢这种编码,我需要把它转换成其他的编码格式。举个例子,我用ghostscript的Python模块把pdfmark数据嵌入到PDF文件中,结果在Acrobat里显示的字符都是错的。
我尝试了很多次用.encode()
和.decode()
在'utf-8'和'latin-1'之间转换,但总是搞不对,结果让我很抓狂。
如果我把字符串用.encode('utf-8')
输出到一个文件,然后用比如iconv.exe把这个文件从UTF-8转换成CP1252(也就是latin-1),再把数据嵌入进去,一切就正常了。
基本上,有人能帮我把字符á从UTF-8编码(十六进制表示为:C3 A1
)转换成latin-1编码(十六进制表示为:E1
)吗?
4 个回答
4
你能多说说你想做什么吗?一般来说,如果你有一个unicode字符串,你可以使用编码功能把它转换成合适编码的字符串。例如:
>>> a = u"\u00E1"
>>> type(a)
<type 'unicode'>
>>> a.encode('utf-8')
'\xc3\xa1'
>>> a.encode('latin-1')
'\xe1'
6
data="UTF-8 data"
udata=data.decode("utf-8")
data=udata.encode("latin-1","ignore")
应该这样做。
26
与其使用 .encode('utf-8')
,不如用 .encode('latin-1')
。