【问题标题】:wget and encoding. how to force utf-8?wget 和编码。如何强制 utf-8?
【发布时间】:2018-03-26 10:33:38
【问题描述】:

当我尝试下载链接时(ubuntu 16.04,wget 1.17.1):

wget --remote-encoding=UTF-8 http://www.altai_terr.vybory.izbirkom.ru/region/altai_terr?action=ik&vrn=4224065120534

我得到一个文件:

>cat altai_terr\?action\=ik 

    ...
    <div class="center-colm">
    <h2>????????????? ???????? ?????????? ????</h2>
    <p>
    <strong>????? ????????: </strong><span id="address_ik"><span>656035, ????? ???????, ???????? ?.?.??????, 59</span></span>
    </p>
    ...

我检查文件:

>file -bi altai_terr\?action\=ik 
text/html; charset=iso-8859-1

我检查已安装的语言环境:

…
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
…
ru_RU
ru_RU.cp1251
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian
ru_UA
ru_UA.koi8u
ru_UA.utf8
…

没有“???”怎么下载文件?

附: 如果我确实运行 python 2.7 和这段代码:

x = 'http://www.altai_terr.vybory.izbirkom.ru/region/altai_terr?action=ik&vrn=4224065120534'
page_uik = requests.get(url = x)
print page_uik.text

我明白了:

...
<div class="center-colm">
<h2>Участковая избирательная комиссия №1767</h2>
<p>
<strong>Адрес комиссии: </strong><span id="address_ik"><span>659595, Алтайский край, Усть-Пристанский район, село Коробейниково, улица Комсомольская, дом 33а</span>, дом культуры</span>
</p>
...

【问题讨论】:

    标签: utf-8 character-encoding wget iso-8859-1 cyrillic


    【解决方案1】:

    我必须用这个命令下载后转换文件:

    iconv -f CP1251 -t UTF-8 altai_terr\?action\=ik
    

    【讨论】:

      【解决方案2】:

      这不是wget 业务。

      您可以向网络服务器询问特定的编码,但网络服务器可能会忽略您。

      Webserver 会告诉你他认为是什么编码,但永远不要相信服务器。

      HTML 还允许作者指定编码(因此无需询问系统管理员/网站管理员)。

      因此,您的任务是,在您获得文档后,检查它是什么编码,然后翻译它,并处理错误和异常。您可能会看到带有无效代码的 UTF-8 网站,或者经常看到带有多种编码的网站(通常是因为动态生成不同部分,编码假设错误)。

      所以得到wget给你的东西,你需要自己做解码。

      【讨论】:

      • 我相信我明白你的意思。我得到了我不知道的编码文件。我必须转换它。我尝试了几个选项,最后得到了这个:code iconv -f CP1251 -t UTF-8 altai_terr\?action\=ik code
      • 是的。困难的部分是以可靠的方式获得CP1251。 HTML 应该告诉你什么编码(我想你注意到 HTTP 给了你错误的编码)。 Python 也进行解码(Python 口号:“包括电池”)。但我推荐python3,它纠正了很多编码问题/错误。
      猜你喜欢
      • 2011-08-19
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2021-04-27
      • 2012-10-08
      相关资源
      最近更新 更多