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

27 投票
4 回答
176055 浏览
提问于 2025-04-16 07:44

我在用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')

撰写回答