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

  • 相关阅读:
    vant ui 在vue中的安装和使用
    vue-element-admin完整项目实例
    关于Vue中main.js,App.vue,index.html之间关系进行总结
    vue 集成 element ui
    springboot写入数据库汉字变问号???
    import declarations are not supported
    基于Idea从零搭建一个最简单的vue项目
    idea中执行“npm”命令,提示node 不是内部或外部命令,也不是可运行的程序
    Intellij IDEA 中如何 给Maven添加依赖
    圆圈中最后剩下的数字
  • 原文地址:https://www.cnblogs.com/webber1992/p/5850773.html
Copyright © 2011-2022 走看看