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

rom*_*mor 17 python encoding

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

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

我已经做了无数的组合,带.encode().decode()"UTF-8"和"拉丁-1"之间,它让我疯狂,我不能输出正确的结果.

如果我将字符串输出到一个文件,.encode('utf-8')然后使用ie iconv.exe将此文件从UTF-8转换为CP1252(又名latin-1)并嵌入数据一切正常.

基本上,有人可以帮我转换角色,即á这是UTF-8编码为十六进制:C3 A1以拉丁字母为十六进制:E1

提前致谢

Ign*_*ams 19

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

  • @funtuku:tchrist试图向你传达的是,无知并不是幸福,"忽略一个非编码字符"并不是一个更好的选择,并且有数万个(仅计算BMP)的Unicode字符不能用latin1设置的192个字符和64个控件进行编码,并且没有.encode arg类似于"ignore",因此...... (3认同)
  • 上面的评论没有意义。两种方法(带或不带“忽略”)现在都工作正常:o 感谢两者。我需要睡觉:| (2认同)

Utk*_*glu 5

data="UTF-8 data"
udata=data.decode("utf-8")
data=udata.encode("latin-1","ignore")
Run Code Online (Sandbox Code Playgroud)

应该这样做.

  • @funktku:每天在工作中我都要处理残缺的文本文件,这些文件充满了由无知的程序员搞砸的```字符.这真是令人恼火! (3认同)
  • 如果我运行你的代码,我会得到一个错误:`AttributeError:'str'对象没有属性'decode'` (3认同)
  • @Ned:当且仅当**不丢弃错误时,可以转换为Latin-1**. (2认同)
  • @Ned,据我所知,OP的情况出现了其他问题,因为Acrobat肯定对Unicode没有问题.他必须将UTF-8写入已经在ISO-8859-1中的文件,这意味着他选择了错误的编码.但是他需要检测错误,因为他们意味着他不能做他想做的事情,而是需要将原版升级到更大的角色曲目. (2认同)