使用wget从维基百科下载带Unicode标题的XML文章遇编码问题
解决Windows下wget下载带西里尔字符的维基词典XML文件问题
问题出在Windows命令行环境对非ASCII字符的编码处理和wget的URL编码逻辑不匹配——浏览器会自动完成西里尔字符的正确UTF-8 URL编码,但wget在Windows cmd中直接传入西里尔字符时,编码方式不符合服务器要求,导致无法识别目标页面,仅返回Schema定义。以下是可行的解决办法:
手动URL编码西里尔字符
先将目标页面的西里尔标题用UTF-8 URL编码工具转换为百分号格式(比如Привет转成%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82),替换到URL的<page>位置后再执行wget命令。切换到PowerShell执行请求
Windows cmd对非ASCII字符支持有限,改用PowerShell可以直接处理西里尔字符的URL编码:# 使用wget(PowerShell中wget是Invoke-WebRequest的别名) wget "https://de.wiktionary.org/wiki/Special:Export/?title=Special:Export&pages=Привет&curonly=1&templates=1&action=submit" -OutFile "output.xml" # 或者直接用Invoke-WebRequest Invoke-WebRequest -Uri "https://de.wiktionary.org/wiki/Special:Export/?title=Special:Export&pages=Привет&curonly=1&templates=1&action=submit" -OutFile "output.xml"从UTF-8编码的文本文件读取URL
如果必须在cmd中使用wget,先将完整的带西里尔字符的URL保存为无BOM的UTF-8编码文本文件(比如url.txt),然后通过文件读取URL:wget -i url.txt -O output.xml
注意:--remote-encoding=UTF-8参数用于指定服务器返回内容的解码编码,不影响请求URL的字符编码,因此无法解决当前问题。
内容的提问来源于stack exchange,提问作者ozz
相关产品推荐
相关产品推荐

