今天用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

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

  1. git使用之如何将github库下载到本地与如何将代码上传github

    git使用之如何将github库下载到本地与如何将代码上传github ---------------------------------------------------------------- ...

  2. 多线程爬虫Java调用wget下载文件,独立线程读取输出缓冲区

    写了个抓取appstore的,要抓取大量的app,本来是用httpclient,但是效果不理想,于是直接调用wget下载,但是由于标准输出.错误输出的原因会导致卡住,另外wget也会莫名的卡住. 所以 ...

  3. Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本

    Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本 不知道为什么,我总想用 Shell 脚本来实现把一个站点内容给下载下来.但是下载什么站点我确不知道.今天尝试了一下利用 curl ...

  4. wget下载工具

    转自于:http://www.jb51.net/LINUXjishu/86326.html 1.使用wget下载单个文件  e.g. wget http://cn.wordpress.org/word ...

  5. Wget下载终极用法和15个详细的例子

    Wget下载终极用法和15个详细的例子 备注:wget  不支持https 下载,也没有相关https参数,当下载https的时候或以改用 axelWget是一种很好用的因特网下载工具,他具有的很多特 ...

  6. 15个Linux Wget下载实例终极指南

    15个Linux Wget下载实例终极指南 Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到 ...

  7. 用wget下载文件

    wget使用文档:https://www.gnu.org/software/wget/manual/wget.html 最开始常用的比如: wget -O  /e/movie.mp4 http://w ...

  8. 使用wget下载JDK8

    每次去官网下载JDK有点烦 但是直接使用wget 又得同意协议所以 使用如下的wget就好了(注意是64位的哦) 先去官网看一下地址变化 没有如下 :修改后面的下载地址即可 注意哦~ 2.然后使用下面 ...

  9. wget下载整个网站

    wget下载整个网站wget下载整个网站可以使用下面的命令 wget -r -p -k -np http://hi.baidu.com/phps , -r 表示递归下载,会下载所有的链接,不过要注意的 ...

随机推荐

  1. Smpt命令顺序不正确。 服务器响应为: Error: need EHLO and AUTH first !

    刚发现以前做的QQ邮箱发送邮件不能用了,查找了下原因:未加( EnableSsl  SSL加密连接 )导致的,顿时觉得很坑,以前QQ邮箱也没有这个限制啊,可能是最近加的. 好吧不多说直接从头走起,照顾 ...

  2. Cryptography I 学习笔记 --- 基于陷门置换的公钥加密

    RSA算法的工作流程 1. 生成公钥私钥 生成两个素数p和q,计算n=p*q,计算φ(n)=n-p-q+1,然后生成e与d,使 e * d = 1 mod φ(n). 然后以(n, e)作为公钥,(n ...

  3. 转载:html+js实现只允许输入两位小数的输入框

    JS代码: <script language="JavaScript" type="text/javascript"> function clear ...

  4. ECNU 3480 没用的函数 (ST表预处理 + GCD性质)

    题目链接  ECNU 2018 JAN Problem E 这题卡了双$log$的做法 令$gcd(a_{i}, a_{i+1}, a_{i+2}, ..., a_{j}) = calc(i, j)$ ...

  5. 用python登录WeChat(微信) 实现自动回复(非常详细)

    如要转载 麻烦备注好原文出处!!! 最近实现了一些微信的简单玩法 我们可以通过网页版的微信微信网页版,扫码登录后去抓包爬取信息,还可以post去发送信息. >>安装itchat这个库    ...

  6. 10.1综合强化刷题 Day1 morning

    位运算1(bit) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK拥有一个十进制的数N.它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有 ...

  7. 浅谈XXE攻击

    一.XXE,即XML External Entity,XML外部实体.ENTITY 实体,在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后 ...

  8. ALBB 找公共最长连续字母序列的长度

    问题描写叙述 给定一个 query 和一个 text .均由小写字母组成.要求在 text 中找出以相同的顺序连续出如今 query 中的最长连续字母序列的长度. 比如, query为"ac ...

  9. 雕刻效果的实现【OpenCV+QT】

    雕刻能够区分为凸雕和凹雕. 凸雕基右下角的点减去左上角的点. 凹雕是左上角的点减去右下角的点. [效果图] 由于进行了缩放.效果看起来差一些.

  10. javascript 匿名函数和模块化

    任何变量,函数,数组,对象,只要不在函数内部,都被认为是全局的,这就是说,这个页面上的其它脚本也可以访问它,而且可以覆盖重写它. 解决办法是,把你的变量放在一个匿名函数内部,定义完之后立即调用它.封装 ...