在Linux中对文件的编码及对文件进行编码转换操作

发布时间:2023-05-16 09:33:13

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 k20 21 事务概要22 ================================================================================================================================================================================================================================23 安装  1 软件包24 25 总下载量:107 k26 安装大小:311 k27 Is this ok [y/d/N]: y28 Downloading packages:29 enca-1.19-1.el7.x86_64.rpm                                                                                                                                                                               | 107 kB  00:00:03     30 Running transaction check31 Running transaction test32 Transaction test succeedededed3333 Running transaction   正在安装    : 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 encoding3 [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 baltic10     polish: ISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORK11    russian: KOI8-R CP1251 ISO-8859-5 IBM866 maccyr12     slovak: CP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK13    slovene: ISO-8859-2 CP1250 IBM852 macce CORK14  ukrainian: CP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyr15    chinese: GBK BIG5 HZ16       none:17 [root@slaver1 soft]#

3、在知道文件的正确编码格式后,转换文件编码格式, 我们常常希望将文件转换为UTF8等常用或默认支持的编码格式, 以便后续进一步处理和使用 enca 进行转换。

当我们给 enca 当命令添加-x参数时,enca 该命令将文件转换为x参数指定的编码格式。

1 [root@slaver1 soft]# enca -L chinese aaa.txt 2 Unrecognized encoding3 [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 encoding8 [root@slaver1 soft]#

看来我在这里做的操作不好看,算了吧,还是用linux自带iconv 转换操作。

4、iconv 如果我们想将GBK编码的文件转换为UTF8编码,则是*nix系统中转换字符编码的标准命令和API, 可以以下方式使用 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, CSIBM112, 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, CSIBM948, CSIBM12712, CSIBM16804, CSIBM1162162, 48   CSISO4UNITEDKINGDOM, CSISO10SWEDISH, CSISO11SWEDISHFORNAMES, 49   CSISO14JISC6220RO, CSISO15ITALIAN, CSISO16PORTUGESE, CSISO17SPANISH, 50   GREEK7OLDCSISO18, CSISO19LATINGREK, GERMAN,CSISO21, CSISO25FRENCH, 51   CSISO27LATINGREK1, CSISO49INIS, CSISO50INIS8, CSISO51INISCYRILIC, 52   GB1988,CSISO58, CSISO60DANISHNORWEGIAN, CSISO60NORWEGIAN1, CSISO61NORWEGIAN2, 53   CSISO69FRENCH, CSISO84PORTUGUESE2 CSISO85SPANISH2, CSISO86HUNGARIAN, 54   GREEK7,CSISO88, ASMO449CSISO89, CSISO90, CSISO92JISC6291984B, CSISO99NAPLPS, 55   CSISO103T618BIT, CSISO11ECMACYRILIC, CSISO121CANADIAN1, CSISO122CANADIAN2, 56   CSISO139CSN369103, JUSIB1002CSISO141 IECP271,CSISO143, CSISO150, 57   CSISO150GREEKCITT, CSISO151CUBA, CSISO153GOST1976874, CSISO646DANISH, 58   CSISO2022CN, CSISO2022JP, CSISO2022JP2, CSISO2022KR, CSISO2033, 59   CSISO5427CYRILIC, CSISO5427CYRILIC1981, GREEKCSISO5428, 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, ISIRI342,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   JP2ISO2022, 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, LATINGREK1, 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, YU177 [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]#

在Linux中对文件的编码及对文件进行编码转换操作_ico

执行后,如下所示:

在Linux中对文件的编码及对文件进行编码转换操作_编码格式_02

如果您只是想查看其他编码格式的文件或解决使用Vim查看文件乱码的问题,您可以

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

set encoding=utf-8

fileencodings=ucs-bom,utf-8,cp936

这样,vim就可以自动识别文件编码(UTF-8或GBK编码的文件可以自动识别),这实际上是基于 如果filencodings提供的编码列表没有找到合适的编码,请使用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 改变它的价值是有意义的。您可以使用另一个编码来编辑和保存文件。例如,您的vimencoding为utf-8,编辑的文件使用cp936编码,vim将 将读取的文件自动转换为utf-8(vim的阅读方式),当您写入文件时,将自动转换为cp936(文件保存代码).

* fileencoding: Vim 当前编辑文件的字符编码方法,Vim 文件在保存文件时也会保存在这种字符编码方式 (不管是否有新文件)。

* fileencodings: Vim自动检测filencoding的顺序列表。启动时,将根据其列出的字符编码方法逐一检测即将打开的文件的字符编码方法,并将 fileencoding 设置为最终检测到的字符编码方法。所以最好是Unicodede 将编码方法放在列表的前面,并将拉丁语系编码方法放在列表的前面 latin1 把它放在最后。

* termencoding: Vim 工作的终端 (或者 Windows 的 Console 窗口) 字符编码方法。如果vim所在的term与vim编码相同,则无需设置。如果没有,您可以使用vimtermencoding选项将自动转换为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 代码页)。

上一篇 Linux统计文件夹中文件个数以及目录个数
下一篇 java printf、println和print区别 java中print与println区别

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题