在Linux中對文件的編碼及對文件進行編碼轉換操作


參考:https://www.cnblogs.com/mithrilon/archive/2018/06/03/9082449.html

http://blog.chinaunix.net/uid-25266990-id-2853835.html

1、如果發現Linux的文件不是utf8格式的文件,首先需要檢測文件編碼格式,在Centos7安裝enca,需要聯網的說。

 1 [root@slaver1 ~]# yum install enca
 2 已加載插件:fastestmirror, langpacks
 3 Loading mirror speeds from cached hostfile
 4  * base: mirror.bit.edu.cn
 5  * epel: mirrors.tuna.tsinghua.edu.cn
 6  * extras: mirror.bit.edu.cn
 7  * updates: mirrors.tuna.tsinghua.edu.cn
 8 正在解決依賴關系
 9 --> 正在檢查事務
10 ---> 軟件包 enca.x86_64.0.1.19-1.el7 將被 安裝
11 --> 解決依賴關系完成
12 
13 依賴關系解決
14 
15 ================================================================================================================================================================================================================================
16  Package                                             架構                                                  版本                                                       源                                                   大小
17 ================================================================================================================================================================================================================================
18 正在安裝:
19  enca                                                x86_64                                                1.19-1.el7                                                 epel                                                107 k
20 
21 事務概要
22 ================================================================================================================================================================================================================================
23 安裝  1 軟件包
24 
25 總下載量:107 k
26 安裝大小:311 k
27 Is this ok [y/d/N]: y
28 Downloading packages:
29 enca-1.19-1.el7.x86_64.rpm                                                                                                                                                                               | 107 kB  00:00:03     
30 Running transaction check
31 Running transaction test
32 Transaction test succeeded
33 Running transaction
34   正在安裝    : enca-1.19-1.el7.x86_64                                                                                                                                                                                      1/1 
35   驗證中      : enca-1.19-1.el7.x86_64                                                                                                                                                                                      1/1 
36 
37 已安裝:
38   enca.x86_64 0:1.19-1.el7                                                                                                                                                                                                      
39 
40 完畢!
41 [root@slaver1 ~]# 

 

2、使用方式,最常用的使用方式,判斷該文件的字符集格式,如下所示:

1 [root@slaver1 soft]# enca aaa.txt 
2 Unrecognized encoding
3 [root@slaver1 soft]# 

我們需要看看當前系統下 enca 支持的語言和對應的編碼類型:

 1 [root@slaver1 soft]# enca --list languages
 2 belarusian: CP1251 IBM866 ISO-8859-5 KOI8-UNI maccyr IBM855 KOI8-U
 3  bulgarian: CP1251 ISO-8859-5 IBM855 maccyr ECMA-113
 4      czech: ISO-8859-2 CP1250 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
 5   estonian: ISO-8859-4 CP1257 IBM775 ISO-8859-13 macce baltic
 6   croatian: CP1250 ISO-8859-2 IBM852 macce CORK
 7  hungarian: ISO-8859-2 CP1250 IBM852 macce CORK
 8 lithuanian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
 9    latvian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
10     polish: ISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORK
11    russian: KOI8-R CP1251 ISO-8859-5 IBM866 maccyr
12     slovak: CP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
13    slovene: ISO-8859-2 CP1250 IBM852 macce CORK
14  ukrainian: CP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyr
15    chinese: GBK BIG5 HZ
16       none:
17 [root@slaver1 soft]# 

 

3、轉換文件編碼格式,在知道了文件的正確編碼格式之后, 我們往往會希望將文件轉換為UTF8之類常用或者系統默認支持的編碼格式, 以便后續進一步處理,使用 enca 進行轉換。

當我們給 enca 命令添加-x參數時,enca 命令就會將文件轉換為-x參數指定的編碼格式。

1 [root@slaver1 soft]# enca -L chinese aaa.txt 
2 Unrecognized encoding
3 [root@slaver1 soft]# enca -i -L chinese aaa.txt 
4 ???
5 [root@slaver1 soft]# enca -x UTF8 -L chinese aaa.txt 
6 [root@slaver1 soft]# enca -L chinese aaa.txt 
7 Unrecognized encoding
8 [root@slaver1 soft]# 

貌似我這里做的操作,不好使的樣子,算了,還是使用linux自帶iconv 進行轉換的操作吧。

 

4、iconv 是*nix系統里的轉換字符編碼的標准命令和API,如果我們希望將一個GBK編碼的文件轉換為UTF8編碼, 可以以以下方式使用 iconv 命令。

1 [root@slaver1 soft]# iconv -f GBK -t UTF8 aaa.txt 
2 [root@slaver1 soft]# 

其中aaa.txt是要被轉換的文件, -f GBK參數表示源文件的編碼是GBK,-t UTF8則表示要轉換的目標編碼。 執行以上命令后,iconv 命令會將轉換后的文件內容打印到標准輸出。

如果希望將轉換后的內容保存到文件(iconv -f GBK -t UTF8 -o aaa_converted.txt aaa.txt 很好用的命令,如果服務器是GBK的,但是此服務器生成的文件要傳輸到UTF8服務器上面,要進行轉義之后才可以進行操作,不然會報錯誤的), 可以添加-o參數:

1 [root@slaver1 soft]# iconv -f GBK -t UTF8 -o aaa_converted.txt aaa.txt 
2 [root@slaver1 soft]# 

這個命令就會將轉換后的內容自動保存到 aaa_converted.txt 文件,通過 iconv -l則可以查看所有的字符集名稱.。前文也提到enca -i則可以用來輸出 iconv 可用的文件編碼名。

  1 [root@slaver1 soft]# iconv -l
  2 The following list contain all the coded character sets known.  This does
  3 not necessarily mean that all combinations of these names can be used for
  4 the FROM and TO command line parameters.  One coded character set can be
  5 listed with several different names (aliases).
  6 
  7   437, 500, 500V1, 850, 851, 852, 855, 856, 857, 860, 861, 862, 863, 864, 865,
  8   866, 866NAV, 869, 874, 904, 1026, 1046, 1047, 8859_1, 8859_2, 8859_3, 8859_4,
  9   8859_5, 8859_6, 8859_7, 8859_8, 8859_9, 10646-1:1993, 10646-1:1993/UCS4,
 10   ANSI_X3.4-1968, ANSI_X3.4-1986, ANSI_X3.4, ANSI_X3.110-1983, ANSI_X3.110,
 11   ARABIC, ARABIC7, ARMSCII-8, ASCII, ASMO-708, ASMO_449, BALTIC, BIG-5,
 12   BIG-FIVE, BIG5-HKSCS, BIG5, BIG5HKSCS, BIGFIVE, BRF, BS_4730, CA, CN-BIG5,
 13   CN-GB, CN, CP-AR, CP-GR, CP-HU, CP037, CP038, CP273, CP274, CP275, CP278,
 14   CP280, CP281, CP282, CP284, CP285, CP290, CP297, CP367, CP420, CP423, CP424,
 15   CP437, CP500, CP737, CP770, CP771, CP772, CP773, CP774, CP775, CP803, CP813,
 16   CP819, CP850, CP851, CP852, CP855, CP856, CP857, CP860, CP861, CP862, CP863,
 17   CP864, CP865, CP866, CP866NAV, CP868, CP869, CP870, CP871, CP874, CP875,
 18   CP880, CP891, CP901, CP902, CP903, CP904, CP905, CP912, CP915, CP916, CP918,
 19   CP920, CP921, CP922, CP930, CP932, CP933, CP935, CP936, CP937, CP939, CP949,
 20   CP950, CP1004, CP1008, CP1025, CP1026, CP1046, CP1047, CP1070, CP1079,
 21   CP1081, CP1084, CP1089, CP1097, CP1112, CP1122, CP1123, CP1124, CP1125,
 22   CP1129, CP1130, CP1132, CP1133, CP1137, CP1140, CP1141, CP1142, CP1143,
 23   CP1144, CP1145, CP1146, CP1147, CP1148, CP1149, CP1153, CP1154, CP1155,
 24   CP1156, CP1157, CP1158, CP1160, CP1161, CP1162, CP1163, CP1164, CP1166,
 25   CP1167, CP1250, CP1251, CP1252, CP1253, CP1254, CP1255, CP1256, CP1257,
 26   CP1258, CP1282, CP1361, CP1364, CP1371, CP1388, CP1390, CP1399, CP4517,
 27   CP4899, CP4909, CP4971, CP5347, CP9030, CP9066, CP9448, CP10007, CP12712,
 28   CP16804, CPIBM861, CSA7-1, CSA7-2, CSASCII, CSA_T500-1983, CSA_T500,
 29   CSA_Z243.4-1985-1, CSA_Z243.4-1985-2, CSA_Z243.419851, CSA_Z243.419852,
 30   CSDECMCS, CSEBCDICATDE, CSEBCDICATDEA, CSEBCDICCAFR, CSEBCDICDKNO,
 31   CSEBCDICDKNOA, CSEBCDICES, CSEBCDICESA, CSEBCDICESS, CSEBCDICFISE,
 32   CSEBCDICFISEA, CSEBCDICFR, CSEBCDICIT, CSEBCDICPT, CSEBCDICUK, CSEBCDICUS,
 33   CSEUCKR, CSEUCPKDFMTJAPANESE, CSGB2312, CSHPROMAN8, CSIBM037, CSIBM038,
 34   CSIBM273, CSIBM274, CSIBM275, CSIBM277, CSIBM278, CSIBM280, CSIBM281,
 35   CSIBM284, CSIBM285, CSIBM290, CSIBM297, CSIBM420, CSIBM423, CSIBM424,
 36   CSIBM500, CSIBM803, CSIBM851, CSIBM855, CSIBM856, CSIBM857, CSIBM860,
 37   CSIBM863, CSIBM864, CSIBM865, CSIBM866, CSIBM868, CSIBM869, CSIBM870,
 38   CSIBM871, CSIBM880, CSIBM891, CSIBM901, CSIBM902, CSIBM903, CSIBM904,
 39   CSIBM905, CSIBM918, CSIBM921, CSIBM922, CSIBM930, CSIBM932, CSIBM933,
 40   CSIBM935, CSIBM937, CSIBM939, CSIBM943, CSIBM1008, CSIBM1025, CSIBM1026,
 41   CSIBM1097, CSIBM1112, CSIBM1122, CSIBM1123, CSIBM1124, CSIBM1129, CSIBM1130,
 42   CSIBM1132, CSIBM1133, CSIBM1137, CSIBM1140, CSIBM1141, CSIBM1142, CSIBM1143,
 43   CSIBM1144, CSIBM1145, CSIBM1146, CSIBM1147, CSIBM1148, CSIBM1149, CSIBM1153,
 44   CSIBM1154, CSIBM1155, CSIBM1156, CSIBM1157, CSIBM1158, CSIBM1160, CSIBM1161,
 45   CSIBM1163, CSIBM1164, CSIBM1166, CSIBM1167, CSIBM1364, CSIBM1371, CSIBM1388,
 46   CSIBM1390, CSIBM1399, CSIBM4517, CSIBM4899, CSIBM4909, CSIBM4971, CSIBM5347,
 47   CSIBM9030, CSIBM9066, CSIBM9448, CSIBM12712, CSIBM16804, CSIBM11621162,
 48   CSISO4UNITEDKINGDOM, CSISO10SWEDISH, CSISO11SWEDISHFORNAMES,
 49   CSISO14JISC6220RO, CSISO15ITALIAN, CSISO16PORTUGESE, CSISO17SPANISH,
 50   CSISO18GREEK7OLD, CSISO19LATINGREEK, CSISO21GERMAN, CSISO25FRENCH,
 51   CSISO27LATINGREEK1, CSISO49INIS, CSISO50INIS8, CSISO51INISCYRILLIC,
 52   CSISO58GB1988, CSISO60DANISHNORWEGIAN, CSISO60NORWEGIAN1, CSISO61NORWEGIAN2,
 53   CSISO69FRENCH, CSISO84PORTUGUESE2, CSISO85SPANISH2, CSISO86HUNGARIAN,
 54   CSISO88GREEK7, CSISO89ASMO449, CSISO90, CSISO92JISC62991984B, CSISO99NAPLPS,
 55   CSISO103T618BIT, CSISO111ECMACYRILLIC, CSISO121CANADIAN1, CSISO122CANADIAN2,
 56   CSISO139CSN369103, CSISO141JUSIB1002, CSISO143IECP271, CSISO150,
 57   CSISO150GREEKCCITT, CSISO151CUBA, CSISO153GOST1976874, CSISO646DANISH,
 58   CSISO2022CN, CSISO2022JP, CSISO2022JP2, CSISO2022KR, CSISO2033,
 59   CSISO5427CYRILLIC, CSISO5427CYRILLIC1981, CSISO5428GREEK, CSISO10367BOX,
 60   CSISOLATIN1, CSISOLATIN2, CSISOLATIN3, CSISOLATIN4, CSISOLATIN5, CSISOLATIN6,
 61   CSISOLATINARABIC, CSISOLATINCYRILLIC, CSISOLATINGREEK, CSISOLATINHEBREW,
 62   CSKOI8R, CSKSC5636, CSMACINTOSH, CSNATSDANO, CSNATSSEFI, CSN_369103,
 63   CSPC8CODEPAGE437, CSPC775BALTIC, CSPC850MULTILINGUAL, CSPC862LATINHEBREW,
 64   CSPCP852, CSSHIFTJIS, CSUCS4, CSUNICODE, CSWINDOWS31J, CUBA, CWI-2, CWI,
 65   CYRILLIC, DE, DEC-MCS, DEC, DECMCS, DIN_66003, DK, DS2089, DS_2089, E13B,
 66   EBCDIC-AT-DE-A, EBCDIC-AT-DE, EBCDIC-BE, EBCDIC-BR, EBCDIC-CA-FR,
 67   EBCDIC-CP-AR1, EBCDIC-CP-AR2, EBCDIC-CP-BE, EBCDIC-CP-CA, EBCDIC-CP-CH,
 68   EBCDIC-CP-DK, EBCDIC-CP-ES, EBCDIC-CP-FI, EBCDIC-CP-FR, EBCDIC-CP-GB,
 69   EBCDIC-CP-GR, EBCDIC-CP-HE, EBCDIC-CP-IS, EBCDIC-CP-IT, EBCDIC-CP-NL,
 70   EBCDIC-CP-NO, EBCDIC-CP-ROECE, EBCDIC-CP-SE, EBCDIC-CP-TR, EBCDIC-CP-US,
 71   EBCDIC-CP-WT, EBCDIC-CP-YU, EBCDIC-CYRILLIC, EBCDIC-DK-NO-A, EBCDIC-DK-NO,
 72   EBCDIC-ES-A, EBCDIC-ES-S, EBCDIC-ES, EBCDIC-FI-SE-A, EBCDIC-FI-SE, EBCDIC-FR,
 73   EBCDIC-GREEK, EBCDIC-INT, EBCDIC-INT1, EBCDIC-IS-FRISS, EBCDIC-IT,
 74   EBCDIC-JP-E, EBCDIC-JP-KANA, EBCDIC-PT, EBCDIC-UK, EBCDIC-US, EBCDICATDE,
 75   EBCDICATDEA, EBCDICCAFR, EBCDICDKNO, EBCDICDKNOA, EBCDICES, EBCDICESA,
 76   EBCDICESS, EBCDICFISE, EBCDICFISEA, EBCDICFR, EBCDICISFRISS, EBCDICIT,
 77   EBCDICPT, EBCDICUK, EBCDICUS, ECMA-114, ECMA-118, ECMA-128, ECMA-CYRILLIC,
 78   ECMACYRILLIC, ELOT_928, ES, ES2, EUC-CN, EUC-JISX0213, EUC-JP-MS, EUC-JP,
 79   EUC-KR, EUC-TW, EUCCN, EUCJP-MS, EUCJP-OPEN, EUCJP-WIN, EUCJP, EUCKR, EUCTW,
 80   FI, FR, GB, GB2312, GB13000, GB18030, GBK, GB_1988-80, GB_198880,
 81   GEORGIAN-ACADEMY, GEORGIAN-PS, GOST_19768-74, GOST_19768, GOST_1976874,
 82   GREEK-CCITT, GREEK, GREEK7-OLD, GREEK7, GREEK7OLD, GREEK8, GREEKCCITT,
 83   HEBREW, HP-GREEK8, HP-ROMAN8, HP-ROMAN9, HP-THAI8, HP-TURKISH8, HPGREEK8,
 84   HPROMAN8, HPROMAN9, HPTHAI8, HPTURKISH8, HU, IBM-803, IBM-856, IBM-901,
 85   IBM-902, IBM-921, IBM-922, IBM-930, IBM-932, IBM-933, IBM-935, IBM-937,
 86   IBM-939, IBM-943, IBM-1008, IBM-1025, IBM-1046, IBM-1047, IBM-1097, IBM-1112,
 87   IBM-1122, IBM-1123, IBM-1124, IBM-1129, IBM-1130, IBM-1132, IBM-1133,
 88   IBM-1137, IBM-1140, IBM-1141, IBM-1142, IBM-1143, IBM-1144, IBM-1145,
 89   IBM-1146, IBM-1147, IBM-1148, IBM-1149, IBM-1153, IBM-1154, IBM-1155,
 90   IBM-1156, IBM-1157, IBM-1158, IBM-1160, IBM-1161, IBM-1162, IBM-1163,
 91   IBM-1164, IBM-1166, IBM-1167, IBM-1364, IBM-1371, IBM-1388, IBM-1390,
 92   IBM-1399, IBM-4517, IBM-4899, IBM-4909, IBM-4971, IBM-5347, IBM-9030,
 93   IBM-9066, IBM-9448, IBM-12712, IBM-16804, IBM037, IBM038, IBM256, IBM273,
 94   IBM274, IBM275, IBM277, IBM278, IBM280, IBM281, IBM284, IBM285, IBM290,
 95   IBM297, IBM367, IBM420, IBM423, IBM424, IBM437, IBM500, IBM775, IBM803,
 96   IBM813, IBM819, IBM848, IBM850, IBM851, IBM852, IBM855, IBM856, IBM857,
 97   IBM860, IBM861, IBM862, IBM863, IBM864, IBM865, IBM866, IBM866NAV, IBM868,
 98   IBM869, IBM870, IBM871, IBM874, IBM875, IBM880, IBM891, IBM901, IBM902,
 99   IBM903, IBM904, IBM905, IBM912, IBM915, IBM916, IBM918, IBM920, IBM921,
100   IBM922, IBM930, IBM932, IBM933, IBM935, IBM937, IBM939, IBM943, IBM1004,
101   IBM1008, IBM1025, IBM1026, IBM1046, IBM1047, IBM1089, IBM1097, IBM1112,
102   IBM1122, IBM1123, IBM1124, IBM1129, IBM1130, IBM1132, IBM1133, IBM1137,
103   IBM1140, IBM1141, IBM1142, IBM1143, IBM1144, IBM1145, IBM1146, IBM1147,
104   IBM1148, IBM1149, IBM1153, IBM1154, IBM1155, IBM1156, IBM1157, IBM1158,
105   IBM1160, IBM1161, IBM1162, IBM1163, IBM1164, IBM1166, IBM1167, IBM1364,
106   IBM1371, IBM1388, IBM1390, IBM1399, IBM4517, IBM4899, IBM4909, IBM4971,
107   IBM5347, IBM9030, IBM9066, IBM9448, IBM12712, IBM16804, IEC_P27-1, IEC_P271,
108   INIS-8, INIS-CYRILLIC, INIS, INIS8, INISCYRILLIC, ISIRI-3342, ISIRI3342,
109   ISO-2022-CN-EXT, ISO-2022-CN, ISO-2022-JP-2, ISO-2022-JP-3, ISO-2022-JP,
110   ISO-2022-KR, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
111   ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-9E, ISO-8859-10,
112   ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16,
113   ISO-10646-UCS-2, ISO-10646, ISO-10646/UCS2, ISO-10646/UCS4, ISO-10646/UTF-8,
114   ISO-10646/UTF8, ISO-CELTIC, ISO-IR-4, ISO-IR-6, ISO-IR-8-1, ISO-IR-9-1,
115   ISO-IR-10, ISO-IR-11, ISO-IR-14, ISO-IR-15, ISO-IR-16, ISO-IR-17, ISO-IR-18,
116   ISO-IR-19, ISO-IR-21, ISO-IR-25, ISO-IR-27, ISO-IR-37, ISO-IR-49, ISO-IR-50,
117   ISO-IR-51, ISO-IR-54, ISO-IR-55, ISO-IR-57, ISO-IR-60, ISO-IR-61, ISO-IR-69,
118   ISO-IR-84, ISO-IR-85, ISO-IR-86, ISO-IR-88, ISO-IR-89, ISO-IR-90, ISO-IR-92,
119   ISO-IR-98, ISO-IR-99, ISO-IR-100, ISO-IR-101, ISO-IR-103, ISO-IR-109,
120   ISO-IR-110, ISO-IR-111, ISO-IR-121, ISO-IR-122, ISO-IR-126, ISO-IR-127,
121   ISO-IR-138, ISO-IR-139, ISO-IR-141, ISO-IR-143, ISO-IR-144, ISO-IR-148,
122   ISO-IR-150, ISO-IR-151, ISO-IR-153, ISO-IR-155, ISO-IR-156, ISO-IR-157,
123   ISO-IR-166, ISO-IR-179, ISO-IR-193, ISO-IR-197, ISO-IR-199, ISO-IR-203,
124   ISO-IR-209, ISO-IR-226, ISO/TR_11548-1, ISO646-CA, ISO646-CA2, ISO646-CN,
125   ISO646-CU, ISO646-DE, ISO646-DK, ISO646-ES, ISO646-ES2, ISO646-FI, ISO646-FR,
126   ISO646-FR1, ISO646-GB, ISO646-HU, ISO646-IT, ISO646-JP-OCR-B, ISO646-JP,
127   ISO646-KR, ISO646-NO, ISO646-NO2, ISO646-PT, ISO646-PT2, ISO646-SE,
128   ISO646-SE2, ISO646-US, ISO646-YU, ISO2022CN, ISO2022CNEXT, ISO2022JP,
129   ISO2022JP2, ISO2022KR, ISO6937, ISO8859-1, ISO8859-2, ISO8859-3, ISO8859-4,
130   ISO8859-5, ISO8859-6, ISO8859-7, ISO8859-8, ISO8859-9, ISO8859-9E,
131   ISO8859-10, ISO8859-11, ISO8859-13, ISO8859-14, ISO8859-15, ISO8859-16,
132   ISO11548-1, ISO88591, ISO88592, ISO88593, ISO88594, ISO88595, ISO88596,
133   ISO88597, ISO88598, ISO88599, ISO88599E, ISO885910, ISO885911, ISO885913,
134   ISO885914, ISO885915, ISO885916, ISO_646.IRV:1991, ISO_2033-1983, ISO_2033,
135   ISO_5427-EXT, ISO_5427, ISO_5427:1981, ISO_5427EXT, ISO_5428, ISO_5428:1980,
136   ISO_6937-2, ISO_6937-2:1983, ISO_6937, ISO_6937:1992, ISO_8859-1,
137   ISO_8859-1:1987, ISO_8859-2, ISO_8859-2:1987, ISO_8859-3, ISO_8859-3:1988,
138   ISO_8859-4, ISO_8859-4:1988, ISO_8859-5, ISO_8859-5:1988, ISO_8859-6,
139   ISO_8859-6:1987, ISO_8859-7, ISO_8859-7:1987, ISO_8859-7:2003, ISO_8859-8,
140   ISO_8859-8:1988, ISO_8859-9, ISO_8859-9:1989, ISO_8859-9E, ISO_8859-10,
141   ISO_8859-10:1992, ISO_8859-14, ISO_8859-14:1998, ISO_8859-15,
142   ISO_8859-15:1998, ISO_8859-16, ISO_8859-16:2001, ISO_9036, ISO_10367-BOX,
143   ISO_10367BOX, ISO_11548-1, ISO_69372, IT, JIS_C6220-1969-RO,
144   JIS_C6229-1984-B, JIS_C62201969RO, JIS_C62291984B, JOHAB, JP-OCR-B, JP, JS,
145   JUS_I.B1.002, KOI-7, KOI-8, KOI8-R, KOI8-RU, KOI8-T, KOI8-U, KOI8, KOI8R,
146   KOI8U, KSC5636, L1, L2, L3, L4, L5, L6, L7, L8, L10, LATIN-9, LATIN-GREEK-1,
147   LATIN-GREEK, LATIN1, LATIN2, LATIN3, LATIN4, LATIN5, LATIN6, LATIN7, LATIN8,
148   LATIN9, LATIN10, LATINGREEK, LATINGREEK1, MAC-CENTRALEUROPE, MAC-CYRILLIC,
149   MAC-IS, MAC-SAMI, MAC-UK, MAC, MACCYRILLIC, MACINTOSH, MACIS, MACUK,
150   MACUKRAINIAN, MIK, MS-ANSI, MS-ARAB, MS-CYRL, MS-EE, MS-GREEK, MS-HEBR,
151   MS-MAC-CYRILLIC, MS-TURK, MS932, MS936, MSCP949, MSCP1361, MSMACCYRILLIC,
152   MSZ_7795.3, MS_KANJI, NAPLPS, NATS-DANO, NATS-SEFI, NATSDANO, NATSSEFI,
153   NC_NC0010, NC_NC00-10, NC_NC00-10:81, NF_Z_62-010, NF_Z_62-010_(1973),
154   NF_Z_62-010_1973, NF_Z_62010, NF_Z_62010_1973, NO, NO2, NS_4551-1, NS_4551-2,
155   NS_45511, NS_45512, OS2LATIN1, OSF00010001, OSF00010002, OSF00010003,
156   OSF00010004, OSF00010005, OSF00010006, OSF00010007, OSF00010008, OSF00010009,
157   OSF0001000A, OSF00010020, OSF00010100, OSF00010101, OSF00010102, OSF00010104,
158   OSF00010105, OSF00010106, OSF00030010, OSF0004000A, OSF0005000A, OSF05010001,
159   OSF100201A4, OSF100201A8, OSF100201B5, OSF100201F4, OSF100203B5, OSF1002011C,
160   OSF1002011D, OSF1002035D, OSF1002035E, OSF1002035F, OSF1002036B, OSF1002037B,
161   OSF10010001, OSF10010004, OSF10010006, OSF10020025, OSF10020111, OSF10020115,
162   OSF10020116, OSF10020118, OSF10020122, OSF10020129, OSF10020352, OSF10020354,
163   OSF10020357, OSF10020359, OSF10020360, OSF10020364, OSF10020365, OSF10020366,
164   OSF10020367, OSF10020370, OSF10020387, OSF10020388, OSF10020396, OSF10020402,
165   OSF10020417, PT, PT2, PT154, R8, R9, RK1048, ROMAN8, ROMAN9, RUSCII, SE, SE2,
166   SEN_850200_B, SEN_850200_C, SHIFT-JIS, SHIFT_JIS, SHIFT_JISX0213, SJIS-OPEN,
167   SJIS-WIN, SJIS, SS636127, STRK1048-2002, ST_SEV_358-88, T.61-8BIT, T.61,
168   T.618BIT, TCVN-5712, TCVN, TCVN5712-1, TCVN5712-1:1993, THAI8, TIS-620,
169   TIS620-0, TIS620.2529-1, TIS620.2533-0, TIS620, TS-5881, TSCII, TURKISH8,
170   UCS-2, UCS-2BE, UCS-2LE, UCS-4, UCS-4BE, UCS-4LE, UCS2, UCS4, UHC, UJIS, UK,
171   UNICODE, UNICODEBIG, UNICODELITTLE, US-ASCII, US, UTF-7, UTF-8, UTF-16,
172   UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE, UTF7, UTF8, UTF16, UTF16BE,
173   UTF16LE, UTF32, UTF32BE, UTF32LE, VISCII, WCHAR_T, WIN-SAMI-2, WINBALTRIM,
174   WINDOWS-31J, WINDOWS-874, WINDOWS-936, WINDOWS-1250, WINDOWS-1251,
175   WINDOWS-1252, WINDOWS-1253, WINDOWS-1254, WINDOWS-1255, WINDOWS-1256,
176   WINDOWS-1257, WINDOWS-1258, WINSAMI2, WS2, YU
177 [root@slaver1 soft]# 

 


如果你需要在Linux中操作windows下的文件,那么你可能會經常遇到文件編碼轉換的問題。Windows中默認的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下面介紹一下,在Linux中如何查看文件的編碼及如何進行對文件進行編碼轉換。

一,查看文件編碼:

在Linux中查看文件編碼可以通過以下幾種方式:

1)、在Vim中可以直接查看文件編碼

:set fileencoding

即可顯示文件編碼格式,很香的命令。

1 [root@slaver1 soft]# vi aaa.txt 
2 [root@slaver1 soft]# 

執行之后,如下所示:

如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那么你可以在

~/.vimrc 文件中添加以下內容:

set encoding=utf-8

fileencodings=ucs-bom,utf-8,cp936

這樣,就可以讓vim自動識別文件編碼(可以自動識別UTF-8或者GBK編碼的文件),其實就是依照 fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼打開。

2)、 enca (如果你的系統中沒有安裝這個命令,可以用sudo yum install -y enca 安裝 )查看文件編碼

$ enca filename

filename: Universal transformation format 8 bits; UTF-8

CRLF line terminators

需要說明一點的是,enca對某些GBK編碼的文件識別的不是很好,識別時會出現:

Unrecognized encoding

二,文件編碼轉換

1)、在Vim中直接進行轉換文件編碼,比如將一個文件轉換成utf-8格式

:set fileencoding=utf-8

2)、 iconv 轉換,iconv的命令格式如下:

iconv -f encoding -t encoding inputfile

比如將一個UTF-8 編碼的文件轉換成GBK編碼

iconv -f GBK -t UTF-8 file1 -o file2

3.)、enconv 轉換文件編碼

比如要將一個GBK編碼的文件轉換成UTF-8編碼,操作如下

enconv -L zh_CN -x UTF-8 filename

三,文件名編碼轉換:

從 Linux往 windows拷貝文件或者從windows往Linux拷貝文件,有時會出現中文文件名亂碼的情況,出現這種問題的原因是因為,windows的文件名 中文編碼默認為GBK,而Linux中默認文件名編碼為UTF8,由於編碼不一致,所以導致了文件名亂碼的問題,解決這個問題需要對文件名進行轉碼。

在Linux中專門提供了一種工具convmv進行文件名編碼的轉換,可以將文件名從GBK轉換成UTF-8編碼,或者從UTF-8轉換到GBK。

首先看一下你的系統上是否安裝了convmv,如果沒安裝的話用:
yum -y install convmv 安裝。

下面看一下convmv的具體用法:

convmv -f 源編碼 -t 新編碼 [選項] 文件名

常用參數:

-r 遞歸處理子文件夾

–notest 真正進行操作,請注意在默認情況下是不對文件進行真實操作的,而只是試驗。

–list 顯示所有支持的編碼

–unescap 可以做一下轉義,比如把%20變成空格

比如我們有一個utf8編碼的文件名,轉換成GBK編碼,命令如下:

convmv -f UTF-8 -t GBK –notest utf8編碼的文件名

這樣轉換以后”utf8編碼的文件名”會被轉換成GBK編碼(只是文件名編碼的轉換,文件內容不會發生變化)

四,vim 編碼方式的設置

和所有的流行文本編輯器一樣,Vim 可以很好的編輯各種字符編碼的文件,這當然包括UCS-2、UTF-8 等流行的Unicode 編碼方式。然而不幸的是,和很多來自 Linux 世界的軟件一樣,這需要你自己動手設置。

Vim 有四個跟字符編碼方式有關的選項,encoding、fileencoding、fileencodings、termencoding (這些選項可能的取值請參考 Vim 在線幫助 :help encoding-names),它們的意義如下:

* encoding: Vim 內部使用的字符編碼方式,包括 Vim 的 buffer (緩沖區)、菜單文本、消息文本等。默認是根據你的locale選擇.用戶手冊上建議只在 .vimrc 中改變它的值,事實上似乎也只有在.vimrc 中改變它的值才有意義。你可以用另外一種編碼來編輯和保存文件,如你的vim的encoding為utf-8,所編輯的文件采用cp936編碼,vim會 自動將讀入的文件轉成utf-8(vim的能讀懂的方式),而當你寫入文件時,又會自動轉回成cp936(文件的保存編碼).

* fileencoding: Vim 中當前編輯的文件的字符編碼方式,Vim 保存文件時也會將文件保存為這種字符編碼方式 (不管是否新文件都如此)。

* fileencodings: Vim自動探測fileencoding的順序列表,啟動時會按照它所列出的字符編碼方式逐一探測即將打開的文件的字符編碼方式,並且將 fileencoding 設置為最終探測到的字符編碼方式。因此最好將Unicode 編碼方式放到這個列表的最前面,將拉丁語系編碼方式 latin1 放到最后面。

* termencoding: Vim 所工作的終端 (或者 Windows 的 Console 窗口) 的字符編碼方式。如果vim所在的term與vim編碼相同,則無需設置。如其不然,你可以用vim的termencoding選項將自動轉換成term 的編碼.這個選項在 Windows 下對我們常用的 GUI 模式的 gVim 無效,而對 Console 模式的Vim 而言就是 Windows 控制台的代碼頁,並且通常我們不需要改變它。

五,Vim 的多字符編碼工作方式

1)Vim 啟動,根據 .vimrc 中設置的 encoding 的值來設置 buffer、菜單文本、消息文的字符編碼方式。

2)讀取需要編輯的文件,根據 fileencodings 中列出的字符編碼方式逐一探測該文件編碼方式。並設置 fileencoding 為探測到的,看起來是正確的 (注1) 字符編碼方式。

3)對比 fileencoding 和 encoding 的值,若不同則調用 iconv 將文件內容轉換為encoding 所描述的字符編碼方式,並且把轉換后的內容放到為此文件開辟的 buffer 里,此時我們就可以開始編輯這個文件了。注意,完成這一步動作需要調用外部的 iconv.dll(注2),你需要保證這個文件存在於 $VIMRUNTIME 或者其他列在 PATH 環境變量中的目錄里。

4)、編輯完成后保存文件時,再次對比 fileencoding 和 encoding 的值。若不同,再次調用 iconv 將即將保存的 buffer 中的文本轉換為 fileencoding 所描述的字符編碼方式,並保存到指定的文件中。同樣,這需要調用 iconv.dll由於 Unicode 能夠包含幾乎所有的語言的字符,而且 Unicode 的 UTF-8 編碼方式又是非常具有性價比的編碼方式 (空間消耗比 UCS-2 小),因此建議 encoding 的值設置為utf-8。這么做的另一個理由是 encoding 設置為 utf-8 時,Vim 自動探測文件的編碼方式會更准確 (或許這個理由才是主要的) 。我們在中文 Windows 里編輯的文件,為了兼顧與其他軟件的兼容性,文件編碼還是設置為 GB2312/GBK 比較合適,因此 fileencoding 建議設置為 chinese (chinese 是個別名,在 Unix 里表示 gb2312,在 Windows 里表示cp936,也就是 GBK 的代碼頁)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM