我正在构建一个脚本以从字符编码损坏的网站中提取一些数据:
- html 标头声称它是 iso-8859-1,但它不是
wget
文件显示它实际上是 utf-8,但字符错误- 逆向工程向我展示了有人设法将 windows 代码页 1252 用作 unicode 代码!
例如,反引号在代码页 1252 中是 0x91,在此页面中是 U+0091。诡异的。令人惊讶的是,网络浏览器似乎能够自动修复这个问题。
我的问题:哪个工具可以帮助我清理这个烂摊子?(不是手工!这是一个有数百页的动态网站,我看到至少六种不同的错误编码。)
根据您对“非手工”的含义,
iconv
可能对您的任务有用。根据我的经验,即使您必须处理错误的编码,iconv 也可以工作。例如,您可以告诉 iconv 输入数据是 utf-8 编码的,即使它是 iso-8859,这样 iconv 就好像输入是 utf-8 一样。这样您就可以修复错误编码的数据。
由于 iconv 可以用作过滤器,因此您可以将其与
curl
. 当wget
您使用--output-document -
.据我所知,iconv 无法检测/猜测正确的输入编码。但是根据您的输入数据的混乱程度,如果网站(太多)有许多不同类型的错误/混合编码,这可能无论如何都是“不可能的”。如果整个网站都以同样的方式搞砸了,你应该能够修复它。