zoukankan      html  css  js  c++  java
  • 字符编码

    我使用的centos7,里面的软件多用utf-8编码,比如gnome-terminal。他的文本界面不支持中文,支持中文似乎要增加内核模块。

    linux中用enca查看文件的编码方式,但有时也会出错(GBK编码方式),如果想确认文件编码方式,可以进入vim中,在命令行中输入 set encoding=gb2312 或者其他的编码方式,文档正确显示则编码方式就时相应的编码;也可以只输入 set fileencoding ,vim会输出文件的编码。

    centos的gnome-terminal终端中默认的编码是utf-8,不能正常显示编码是gb2312、gbk、gb18030的汉字,使用luit转换编码的方式也不能正常显示。这三个编码都是中国的本地编码,gbk是对gb2312的扩展,gb18030是对gbk的扩展,和utf-8不兼容;转换时必须将其转换为unicode,再转换为utf-8,utf-8转换为gb2312也必须经过unicode。



    vim 的字符编码设置选项有:


    set encoding=utf-8            enc,vim内部的编码,包括内存数据和配置文件,默认为$LANG,没有则是latin1,编码应该和终端保持一致
    set fileencodings=utf-8,gb2312,gbk,gb18030      fencs,打开文档时检测文件的编码类型,都不符合时默认使用encoding的设置项打开
    set fileencoding=utf-8            fenc,编辑文件的编码
    set termencoding=utf-8          vim工作的缓冲区的字符编码方式

    具体查看:http://www.cnblogs.com/freewater/archive/2011/08/26/2154602.html

    这样设置之后用vim编辑包含汉字的文档可以在终端正常显示了,因为他们都是utf-8编码。



    文档编码转换:


    使用vim转换:用vim打开文档,在底行模式中输入 set fileencoding=utf-8 就可以将gb2312文档转换为utf-8的文档了。

    使用工具enca:
    enca -L 当前语言 -x 目标编码 文件名    //语言zh_CN

    使用工具转换enconv(常出错):
    enconv -L zh_CN -x UTF-8 filename        gb2312转换为utf-8
    iconv -f GBK -t UTF-8 file1 -o file2        utf-8转换为gbk



    Linux 文件名编码转换:


    原来在windows里的文件都是用GBK编码的,转换使用工具convmv。
    convmv -f 源编码 -t 新编码 [选项] 文件名

    常用选项:
    -r 递归处理子文件夹
    --notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验
    --list 显示所有支持的编码
    --unescap 可以做一下转义,比如把%20变成空格
     
    注意:不要在NTFS和FAT文件 系统中使用此命令,否则可能产生意外结果,如果要在Linux 中正确的显示NTFS和 FAT的中文件名,可以通过mount参数来解决,具体方法查看一下man手册。



    网页编码:


    <meta http-equiv="content-type" content="text/html" charset="utf-8"/>
    使用vim编辑的网页如果没有指定使用什么编码方式,firefox浏览器会默认使用gb2312,而如果网页文件保存的编码是utf-8则会出现乱码。在firefox中的设置方式是有一个字符编码的组件,可以设置firefox网页显示内容的编码,选择unicode就可以显示utf-8编码的网页了,但是建议在网页里直接指定网页显示的编码方式,这样浏览器会自动选择编码方式。对于使用utf-8和gb2312的区别,使用utf-8编码的文档占用的存储空间更大,但是兼容性更好,国际上通用的是utf-8。而gb2312则在国内用得很多。



    编码方式


    分为内码和交换码,内码用于计算机内部处理,交换码用于文件的交换,先将文将由内码转换为交换码,再将交换码转换为另一中编码的内码;ASCII将交换码作为内码使用,汉字编码的内码和交换码不同。

    cp936            中文windows的默认编码
    ucs-bom
    utf-8
    ucs-2
    utf-16
    utf-32
    ucs-4
    gb2312
    gbk
    gb18030
    big5            即大五码,繁体汉字内码,是业界的标准,最新为big5-2003,被包含在交换码CNS11643的附表中。windows繁体版本的编码
    CCCII            中文交换码
    CNS11643        中文交换码



    参考:


    http://i.cnblogs.com/EditPosts.aspx?postid=4923980
    http://www.2cto.com/os/201305/211266.html
    http://bbs.csdn.net/topics/300038221
    http://blog.csdn.net/fmddlmyy/article/details/372148
    http://blog.csdn.net/ultrani/article/details/8432767

  • 相关阅读:
    RFID之linux下利用PN532对M1卡(饭卡,
    Ubuntu server配置远程VNC服务
    如何在Linux命令行中剪裁图像
    CentOS 6.3 yum安装LAMP(Apache+MySQL+PHP)
    ubuntu16.04 安装Opencv 3.1.0 import cv2 报错ImportError: No module named hdf5
    ubuntu16.04 安装Opencv 3.1.0 fatal error: hdf5.h: 没有那个文件或目录
    通过子网掩码确定主机地址
    单调数据结构
    利用Python分析羊车门问题
    Welcome To My Blog!!!
  • 原文地址:https://www.cnblogs.com/little-snake/p/4923980.html
Copyright © 2011-2022 走看看