很多朋友常常哀嚎,说他们的 vim 里面怎么无法显示正常的中文啊?其实这很有可能是因为编码的问题! 因为中文编码有 big5 与 utf8 两种,如果你的文件是使用 big5 编码制作的,但在 vim 的终端接口中你使用的是万国码(utf8), 由于编码的不同,你的中文文件内容当然就是一堆乱码了!怎么办?这时你得要考虑许多东西啦!有这些:

    • 你的 Linux 系统默认支持的语系数据:这与 /etc/locale.conf 有关;
    • 你的终端接口 (bash) 的语系: 这与 LANG, LC_ALL 这几个变量有关;
    • 打开终端机的软件,例如在 GNOME 下面的窗口接口。
      事实上最重要的是上头的第三与第四点,只要这两点的编码一致,你就能够正确的看到与编辑你的中文文件。 否则就会看到一堆乱码啦!

    一般来说,中文编码使用 big5 时,在写入某些数据库系统中,在“许、盖、功”这些字体上面会发生错误! 所以近期以来大多希望大家能够使用万国码 utf8 来进行中文编码!但是在中文 Windows 上的软件常常默认使用 big5 的编码 (不一定是 windows 系统的问题,有时候是某些中文软件的默认值之故), 包括鸟哥由于沿用以前的文件数据文件,也大多使用 big5 的编码。此时就得要注意上述的这些咚咚啰。

    在 Linux 本机前的 tty1~tty6 原本默认就不支持中文编码,所以不用考虑这个问题!因为你一定会看到乱码!呵呵! 现在鸟哥假设俺的文件文件内编码为 big5 时,而且我的环境是使用 Linux 的 GNOME ,启动的终端接口为 GNOME-terminal 软件, 那鸟哥通常是这样来修正语系编码的行为:

    然后在终端接口工具列的“终端机”—>“设置字符编码” —>“中文 (正体) (BIG5)”项目点选一下, 如果一切都没有问题了,再用 vim 去打开那个 big5 编码的文件,就没有问题了!以上!报告完毕!

    我们说过,在 Linux 下面的指令在开始执行时,他的判断依据是 “Enter”,而 Linux 的 Enter 为 LF 符号, 不过,由于 DOS 的断行符号是 CRLF ,也就是多了一个 ^M 的符号出来, 在这样的情况下,如果是一个 shell script 的程序文件,呵呵~将可能造成“程序无法执行”的状态~ 因为他会误判程序所下达的指令内容啊!这很伤脑筋吧!

    那怎么办啊?很简单啊,将格式转换成为 Linux 即可啊!“废话”,这当然大家都知道,但是, 要以 vi 进入该文件,然后一个一个删除每一列的 CR 吗?当然没有这么没人性啦! 我们可以通过简单的指令来进行格式的转换啊!

    不过,由于我们要操作的指令默认并没有安装,鸟哥也无法预期你有没有网络,因此假设你没有网络的状况下, 请拿出你的原版光盘,放到光驱里头去,然后使用下面的方式来安装我们所需要的这个软件喔!

    那就开始来玩一玩这个字符转换吧!

    很多朋友都会有的问题,就是想要将语系编码进行转换啦!举例来说,想要将 big5 编码转成 utf8 。 这个时候怎么办?难不成要每个文件打开会转存成 utf8 吗?不需要这样做啦!使用 iconv 这个指令即可! 鸟哥将之前的 vi 章节做成 big5 编码的文件,你可以照下面的链接来下载先:


    • 在终端机的环境下你可以使用“ wget 网址”来下载上述的文件喔!鸟哥将他下载在 /tmp/vitest 目录下。 接下来让我们来使用 iconv 这个指令来玩一玩编码转换吧!

    这指令支持的语系非常之多,除了正体中文的 big5, utf8 编码之外,也支持简体中文的 gb2312 , 所以对岸的朋友可以简单的将鸟站的网页数据下载后,利用这个指令来转成简体,就能够轻松的读取文件数据啰! 不过,不要将转成简体的文件又上传成为您自己的网页啊!这明明是鸟哥写的不是吗? ^_^

    不过如果是要将正体中文的 utf8 转成简体中文的 utf8 编码时,那就得费些功夫了! 举例来说,如果要将刚刚那个 vi.utf8 转成简体的 utf8 时,可以这样做: