今天用wget想下载文件,结果下载了一堆本地的index.html文件,一查看全是乱码,然后百度了一下,网页的编码格式大概有三种:

1、utf-8

2、gb2312

3、gbk

要在网页源码中的<head>下的<meta >属性的设置中查看 charset  对应的属性值。

而我的centos的操作系统只识别utf-8格式的,由环境变量LANG保存的配置,我们可以查看一下 echo $LANG  ,系统返回的是:zh_CN.UTF-8 。所以我们需要一个转换编码格式的命令:iconv,它用于把给定的文件内容从一种编码转换成另一种编码。常用的命令就是:

iconv   -f    [gb2312/gbk]    -t   [utf-8]   [inputfile]

如果想要知道系统下支持的所有的编码格式,可以用命令

iconv  -l   (列出已知的编码字符集合)来查看。

当然,我们也可以暂时的改变环境变量LANG的值为我们本地的index.html中“charset”的编码格式。

下面是转码的脚本

#!/bin/bash

cat <<NOTE
 该脚本用于解决wget下载到本地的index.html文件的乱码问题,如果是utf-8格式的,则不作调整,如果不是utf-8格式的,将会转换为utf-8的格式,并重定向输出到同名文件下的子文件。
webber
NOTE

usage() 

  #显示脚本的使用方法
 echo "Usage: Please tell me the correct file name!"
 exit 35 
}

if [ ! -f "$1" ];then
   echo "$1: No such file"
   usage
fi

Language=`cat $1 | grep "charset" | sed "s/^.*charset=//" | awk -F'\"' '{print $1}' | sed -n "1p"` #查看charset使用的是哪种3编码格式  大多数网站都可以抓取出来
# Language2=`cat jingdong.html | grep "charset" | sed "s/^.*charset=\"//" | awk -F'\"' '{print $1}' | sed -n "1p"` 京东网站抓不出来,在用sed替换时需要一个"来改变替换的格式

case "$Language" in   #进行格式转换 并且输出到文件
 utf-8)
    echo "correct!! It's utf-8 code. "
    ;;
 [gG][bB]2312)
   cat $1 | iconv -f gb2312 -t utf-8 > $1.1 2> /dev/null
   echo "finished! please cat the file $1.1!!"
   ;;
 [gG][bB][kK])
   cat $1 | iconv -f gbk -t utf-8 > $1.1 2> /dev/null
   echo "finished! please cat the file $1.1!!"
   ;;
 *)
   echo "I don't know the uni-code"
   ;;
esac
exit 0

转载于:https://www.cnblogs.com/webber1992/p/5850773.html

初学shell,今天遇到由wget下载到本地的网页源代码的乱码问题,无聊的写了一个转码的脚本...相关推荐

  1. wget下载需登录的网页中的文件

    wget下载需登录的网页中的文件(使用cookie) wget简介 以网络下载 maven 包为例 wget -c http://mirrors.shu.edu.cn/apache/maven/mav ...

  2. 微信小程序漏洞:可下载任意微信小游戏源代码

    本文转载自[小专栏平台]公众号,由独立开发者朱鹏飞投稿.如果大家想要微信跳一跳小游戏以及其他十几个小游戏源码,大家可以关注[小专栏平台]公众号,回复"微信小游戏"即可获取到. 截止 ...

  3. 将vue文档下载到本地预览

    将vue文档下载到本地预览 由于vue文档在服务器在国外,因此访问速度较慢,为了方便文档查看,可以将文档下载到本地预览 步骤 到vue的GitHub仓库下载文档源码 下载node.js和git安装到本 ...

  4. linux bash shell wget 下载google drive(谷歌云端硬盘)中大文件

    linux bash shell wget 下载google drive(谷歌云端硬盘)中大文件 wget --load-cookies /tmp/cookies.txt "https:// ...

  5. shell命令:wget下载文件

    命令格式: wget [参数] [URL地址] 实例1:使用wget下载单个文件 wget https://github.com/stedolan/jq/releases/download/jq-1. ...

  6. [Linux运维基础]全家桶详解!Linux中RPM包、wget下载、YUM安装、tar包、zip等包管理方式区别与参数详解,附wget下载源码包编译安装方法

    文章目录 一.RPM.tar.gz 1.rpm包格式 2.rpm包管理 3.tar包管理参数 二.wget 1.wget参数 2.wget下载源码包后编译安装 三.YUM 1.YUM工作原理 2. Y ...

  7. Linux 配置IP地址,子网,网关,DNS,linux远程, wget 下载工具

    查看命令识别的网卡名:nmcli connection show   配置ip,子网,网关    nmcli connection modify 'System eth0'  ipv4.method  ...

  8. 解决wget下载中文乱码的方法

    在下载用apache或者nginx做的索引目录时,遇到文件名乱码问题.一般情况下加上–restrict-file-names=nocontrol参数就可以用了. 有一个前提,要注意索引目录显示出来的是 ...

  9. Linux之wget下载

    一.介绍 Linux系统下载文件工具,用来从指定的URL下载文件 二.使用方法 1 2 3 4 5 6 7 8 语法:wget [参数] [URL地址] 选项: -c接着下载没下载完的文件 -b启动后 ...

最新文章

  1. R语言进行主成分分析(PCA)、使用prcomp函数进行主成分分析:碎石图可视化(scree plot)、R通过线图(line plot)来可视化主成分分析的碎石图(scree plot)
  2. jupyter !wget 等系统命令使用技巧
  3. 三张图读懂机器学习 :基本概念、五大流派与九种常见算法
  4. 明明是全闪存阵列,为何存储性能仍然不够快
  5. 两个for还是一个for?
  6. QDoc分组事物Grouping Things
  7. C++操作SQLite简明教程
  8. Python练习-迭代器-模拟cat|grep文件
  9. Redis在windows下安装过程
  10. carsim中质心加速度_Carsim整车建模参数.doc
  11. python基础教程百度云-python从入门到精通视频教程百度云资源
  12. 在命令行中创建Django项目
  13. 命令行工具抓取trace
  14. VirtualBox调试分辨率时遇到的问题
  15. 手势识别(一)--手势基本概念和ChaLearn Gesture Challenge
  16. 在sqli-liabs学习SQL注入之旅(第一关~第十关)
  17. 20145212 罗天晨 WEB登陆发贴及会话管理功能的实现
  18. win10 系统重装 (官方纯净版,无预置应用)
  19. HNUSTOJ 部分源码
  20. 1083: 阶乘尾数零的个数

热门文章

  1. 专注于分布式存储计算技术及其应用url http://www.nosqlnotes.net/
  2. [转]使用Visual C#制作可伸缩个性化窗体
  3. gstat | 空间插值(四)——克里金插值之协同克里金和交叉验证
  4. cout 数组_C++数组|快速排序、二分法查找及其时间复杂度
  5. java fields是_一个快速生成R2.java中fields的插件
  6. 鸿蒙os编码_如何看待鸿蒙OS代码示例?
  7. 简述相关与回归分析的关系_分类数据与分类数据的相关关系分析
  8. Python网络爬虫系列(一)
  9. 错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is
  10. oracle级联查询 level,ORACLE 数据库的级联查询 一句sql搞定(部门多级)