使用w3m终端提取网页文本时拉丁重音字符缺失问题求助
解决w3m提取网页时拉丁重音字符显示异常的方案
这个问题我之前帮朋友处理过,大概率是终端字符编码或者w3m的编码配置不匹配导致的。试试下面这几个具体方案,应该能搞定:
先确认终端的字符编码为UTF-8
网页通常采用UTF-8编码,如果终端的编码不是UTF-8,就会出现重音字符缺失或乱码。先执行这个命令查看当前终端编码:echo $LANG如果输出不是类似
en_US.UTF-8或es_ES.UTF-8这类带UTF-8的编码,临时设置可以执行:export LANG=es_ES.UTF-8 # 或者对应你的系统语言的UTF-8编码要是想永久生效,把上面这行添加到你的
~/.bashrc或~/.zshrc文件末尾,重启终端即可。强制w3m以UTF-8编码输出
w3m有时候会自动识别网页编码出错,我们可以直接指定输出编码为UTF-8,修改命令为:w3m -dump -O utf-8 https://www.revistavirtualpro.com/noticias/energia这里的
-O参数就是用来指定输出字符编码的。指定网页的输入编码(如果自动识别失败)
有些网页的编码声明可能不规范,你可以先查看网页的实际编码:curl -I https://www.revistavirtualpro.com/noticias/energia在输出的
Content-Type字段里找charset值,比如如果是iso-8859-1,就用下面的命令强制转换编码:w3m -dump -I iso-8859-1 -O utf-8 https://www.revistavirtualpro.com/noticias/energia-I参数指定网页的输入编码,-O转成UTF-8输出。用iconv手动转换编码
如果上面的方法都不行,还可以先用w3m dump出内容,再用iconv工具转换编码:w3m -dump https://www.revistavirtualpro.com/noticias/energia | iconv -f iso-8859-1 -t utf-8注意把
-f后面的iso-8859-1换成你实际查到的网页编码。
如果还是有问题,检查下终端使用的字体是否支持拉丁重音字符,换成DejaVu Sans Mono这类支持多语种的字体试试。
内容的提问来源于stack exchange,提问作者Laiun Cristian Ezequiel
相关产品推荐
相关产品推荐

