Linux中enca命令及文件编码问题


   在不同的操作系统之间读取文件时时常会遇到编码格式的问题。目前Windows系统默认的编码格式为GB2312,而Linux默认使用UTF-8编码格式。在Linux系统中,可以通过enca命令来查看和转换文件的编码格式。可以用apt-get命令来获取enca软件包,其基本信息如下:
NAME:
       enca -- detect and convert encoding of text files

SYNOPSIS:
       enca [-L LANGUAGE] [OPTION]... [FILE]...
       enconv [-L LANGUAGE] [OPTION]... [FILE]...

一般用法:
    (1)enca FILE   查看文件的编码格式
    (2)enconv FILE   将原文件转换为本地的默认编码格式
    (3)enca -x TARFORMAT FILE   将原文件转换为TARFORMAT格式(覆盖原文件)
    (4)enca -x TARFORMAT FILE2   将原文件(FILE1)转换为TARFORMAT格式存在FILE2中(不覆盖原文件)
    (5)enca -L LANGUAGE -X TARFORMAT <FILE1> FILE2   将文件所使用的语言LANGUAGE作为参数
    enca命令需要知道所需处理文件所使用的语言,这样可以正确地转换文件的编码格式。当使用命令没有明确给出待处理文件使用的语言时,enca命令会测试本地设置中的相关变量来判断待处理文件默认的使用语言。所测得的结果可能并不是文件所使用的语言,这会给文件的编码转换造成影响,因此在使用enca命令转换文件编码格式时应给出文件所使用的语言。其基本格式为:language_PLACE ,其中_PLACE 可省略。以下给出一些例子:(1) 简体中文(中国)zh_CN  (2) 繁体中文(台湾地区)zh_TW  (3) 繁体中文(香港)zh_HK  (4) 英语(美国)en_US  (5) 英语(英国)en_GB  (6) 英语(加拿大)en_CA  (7) 英语(澳大利亚)en_AU  (8) 英语(印度)en_IN  (9) 日语(日本)ja_JP  (10) 法语(法国)fr_FR  (11) 德语(德国)de_DE  (12) 俄语(俄罗斯)ru_RU  (13) 意大利语(意大利)it_IT
  则可以如下使用enca命令:
  enca -L zh_CN -x UTF-8 file2


另列出enca支持的语言及相应的8bit encodings(8bit编码)如下所示
语言 8bit encodings
   Belarussian   CP1251 IBM866 ISO-8859-5 KOI8-UNI maccyr IBM855
       Bulgarian     CP1251 ISO-8859-5 IBM855 maccyr ECMA-113
       Czech         ISO-8859-2 CP1250 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
       Estonian      ISO-8859-4 CP1257 IBM775 ISO-8859-13 macce baltic
       Croatian      CP1250 ISO-8859-2 IBM852 macce CORK
       Hungarian     ISO-8859-2 CP1250 IBM852 macce CORK
       Lithuanian    CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
       Latvian       CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
       Polish        ISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORK
       Russian       KOI8-R CP1251 ISO-8859-5 IBM866 maccyr
       Slovak        CP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
       Slovene       ISO-8859-2 CP1250 IBM852 macce CORK
       Ukrainian     CP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyr
       Chinese       GBK BIG5 HZ
       none
   语言类型none包含的是非8bit编码,因此可以在文件为多字节编码时使用。


  在Windows系统和Linux系统中,所使用的换行字符是不同的。一般而言,Windows系统中将CRLF(即^M$)作为换行符使用,而在Linux系统中使用的则是LF($)。对Windows系统下的txt文件使用enca命令可以看到如下信息:
Simplified Chinese National Standard; GB2312
  CRLF line terminators
但是将UTF-8类型的文件转换为GB2312格式的文件后,使用enca命令结果为:
Simplified Chinese National Standard; GB2312
用enca命令将UTF-8类型文件转换为GB2312之后,换行符并没有跟着改变成CRLF,因此在Windows下打开转换后的文件时,所有的文字会变为一行,换行符已失效。换行符相关内容可参看http://www.cnblogs.com/yunf/archive/2011/04/20/2021830.html 中的文章。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值