今天用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. 关于main函数的参数

    #include <stdio.h> int main(int argc, char const *argv[]) { int i; for ( i = 0; i < argc; i ...

  2. VS恢复默认设置

    通过“导入和导出设置”实现VS恢复默认设置 1.快捷步骤 工具 → 导入和导出设置 → 重置所有设置 → 下一步 → 选择“是否保存当前设置”,下一步 → 选择“要重置的开发语言(如,Visual C ...

  3. VS2017使用

    1. 用了一段时间的layui,发现官网的升级的功能很好用,于是把自己本地项目的layui升级到的高版本.按照官网上的代码几乎一模一样,但是功能就是出不来,之后发现本地虽然是高版本但是生成的脚本依然是 ...

  4. Mac outlook设置自动回复

    outlook是公司必不可少的软件, 在mac下开发,当然用的是mac版的outlook,今天介绍一下如何设置mac下outlook的自动回复. 有两种方式的帐号,一种是Exchange accoun ...

  5. ThinkPHP创建应用的一般开发流程及实例

    Thinkphp是免费开源的php框架,提供了建站所需要的各种组件,方便用户快速建设部署网站. Thinkphp简介:http://thinkphp.cn/Manual/16 官方完全开发手册:htt ...

  6. MFC中的CDC详细教程

    参考:  MFC中的CDC详细教程1,2,3 StretchDIBits用法

  7. VirtualBox导入XXXX.vdi时报错

    virtualbox导入vdi文件时出现以下的问题: 解决方法: windows+R,输入cmd,进入virtualbox的安装文件夹(或者在硬盘中直接进入virtualbox的安装文件夹.在任务栏里 ...

  8. 九度oj题目&amp;吉大考研10年机试题全解

    吉大考研机试2010年题目 题目一(jobdu1478:三角形的边).    http://ac.jobdu.com/problem.php?pid=1478 给出三个正整数,计算最小的数加上次小的数 ...

  9. 【重点突破】——SVG技术动态随机绘制圆形

    一.引言 在学习Canvas绘图技术时,做的是随机验证码的例子,在学习SVG绘图技术时,同样也有一个随机绘制的例子——动态随机绘制圆形.这个练习,即综合了多种SVG技术的知识点,又很具有艺术感,随机生 ...

  10. 2016.7.12 去除mybatis-generator生成的class里的注释

    用mybatis-generator自动生成代码会出现很多没必要的注释.     在配置文件里加上: 是否去除所有自动生成的文件的时间戳: 是否去除所有自动生成文件的注释: <commentGe ...