【发布时间】:2014-06-24 16:40:56
【问题描述】:
大家好,感谢您的宝贵时间!
我有 iso-8859-1 html 文件作为输入,用 html 实体代替非 ascii 字符,这很整洁。除了只有一个字符:–(00C9 unicode 代码点,以防它不显示)。我想将其转换为“oe”以摆脱它。
我已经试过了 iconv -f iso-8859-1 -t ascii//translit
但它撕掉了有问题的角色,并没有在其位置放置任何东西。
我使用 python 2.7 并尝试了一些关于解码、编码、编解码器的方法,但我哪儿也不去。 这是我此时的代码:
i=0
for file in os.listdir(dir_in):
i+=1
file=codecs.open(dir_in+file,"r","iso-8859-1")
out=codecs.open(dir_out+str(i)+".html","w","utf-8")
for line in file:
#at this point the type of line is "unicode"
line=line.decode("iso-8859-1",errors="replace")
out.write(line)
file.close
out.close
(我无法正确显示缩进,但我向你保证这部分没问题) 我收到“ascii 编解码器无法编码字符 u\x9c”错误。我不确定我是否正确使用了解码。
我也试过了:
line=unicode(line)
在没有替换的情况下摆脱了角色(我猜这就是它应该做的)
line=unicode(line, errors="replace")
这给了我“TypeError:不支持解码 Unicode” 我想这两个没有用,因为我不应该给“unicode”一个已经是 unicode 的东西。
如果你有一个在 bash 或 perl 中执行此操作的简单方法,我也很感兴趣,但我不能使用 python 3,因为它不受必须运行该东西的服务器支持。
非常感谢!
【问题讨论】:
标签: python decode iso-8859-1 non-ascii-characters