zoukankan      html  css  js  c++  java
  • 初学shell,今天遇到由wget下载到本地的网页源代码的乱码问题,无聊的写了一个转码的脚本

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

  • 相关阅读:
    loaded some nib but the view outlet was not set
    指标评比
    IOS DEVELOP FOR DUMMIES
    软件测试题二
    javascript select
    DOM节点类型详解
    mysql操作
    UVA 10055
    solutions for 'No Suitable Driver Found For Jdbc'
    解决git中文乱码问题
  • 原文地址:https://www.cnblogs.com/webber1992/p/5850773.html
Copyright © 2011-2022 走看看