如何修复坏解码?

时间:2016-01-10 19:51:29

标签: python-2.7 unicode python-unicode

我正在使用如下所示的程序来编写(从网络上抓取)一个人员数据列表。 我认为代码本身没问题,但我对结果感到困惑。有些字符被正确解码,有些则没有。例如:

pos = np.where(signal > -1e-8, signal, np.nan)
neg = np.where(signal < 1e-8, signal, np.nan)

两个字符串中的最后一个单词是相同的! 还呢?用于替换不可翻译的字符的符号一次不使用:

STANIS?AWurodzony/a 01.01.1888, ?Ԅ?
HALINAurodzony/a 05.07.1927, ŁÓDŹ

以下是代码:

STANISŁAWurodzony/a 24.03.1907, RAKSZANY
      ^
      | here is written ok - not replaced

问题: 如何解决这个问题。我的手术错了吗?或者源页面已破坏编码? (我想它没关系,我可以在浏览器中阅读它而没有任何错误。)

2 个答案:

答案 0 :(得分:1)

这看起来像一种波兰语,并且看起来不像使用UTF-8这样的多字节编码。您正在使用Names.txt写入ISO-8859-1文件,但该文件并不支持所有修饰字符。

您可以使用ISO-8859-2来支持波兰特色,但更好的方法是使用支持所有语言的UTF-8,并且是网络上的通用标准。

尝试

file = codecs.open('Names.txt','a','UTF-8','replace')

使用请求发出请求时,请尝试检查每个页面的编码。例如:

res = requests.get('http://real.address.gov.pl'+line)
res.encoding = 'utf-8' 
soup = BeautifulSoup(res.text)

答案 1 :(得分:1)

我对python不是很熟悉,但是java程序遇到了类似的问题。几乎在所有情况下,问题都是在所有步骤中都没有使用相同的编码,因此在转换它时会产生丑陋的特征。

如果可能的话,我建议在整个过程中使用UTF-8。

一个偏离主题的一面评论:因为我经常这样做,我自己买了this T-Shirt(正确拼写Scheiß,德语为 crap )在工作中穿着它; - )