在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题
来源:互联网 发布:网络 编辑:程序博客网 时间:2024/06/05 10:56
iconv命令是运行于linux/unix平台的文件编码装换工具。当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码不同而引起的,这时可以使用iconv进行编码转换,从而解决乱码问题。
解决文本文件乱码问题分3步:1.确定文件编码,2.确定iconv是否支持此编码的转换,3.确定Linux/Unix操作系统编码,4.转换文件编码为与系统编码一致;下面通过对test.txt文件来举例。
1、 使用file命令来确定文件编码:
- $ file -bi gbk.txt | sed -e 's/.*[ ]charset=//' |tr '[a-z]' '[A-Z'
- ISO-8859-1
可见test.txt文件编码为ISO-8859-1编码。
2、 使用iconv -l确定iconv是否支持此种编码的转换:
- $ iconv -l | grep ISO-8859-1
- ISO-8859-1//
- ISO-8859-10//
- ISO-8859-11//
- ISO-8859-13//
- ISO-8859-14//
- ISO-8859-15//
- ISO-8859-16//
3、 确定Linux/Unix操作系统编码:
- $ echo $LANG
- zh_CN.UTF-8
当前操作系统坏境编码为"UTF-8"
4、 转换编码
- $ iconv -f ISO-8859-1 -t UTF-8 test.txt
- 测试
注:由于file命令常常会误判编码,如发现转换出来的编码依然是乱码,可将iconv -f的输入编码换成其他常用编码试试: GBK、BIG5、HZ、GB2312、GB18030、ASCII
iconv命令的详细语法:
iconv [选项..] 文件
选项:
-f 输入编码
-t 输出编码
-l 列出所有已知的编码
-o 输出文件
附录字符编码表:
编码集:
ISO-8859-2ISO 8859-2 standard; ISO Latin 2ISO-8859-4ISO 8859-4 standard; Latin 4ISO-8859-5ISO 8859-5 standard; ISO CyrillicISO-8859-13ISO 8859-13 standard; ISO Baltic; Latin 7ISO-8859-16ISO 8859-16 standardCP1125MS-windows code page 1125CP1250MS-Windows code page 1250CP1251MS-Windows code page 1251CP1257MS-Windows code page 1257; WinBaltRimIBM852IBM/MS code page 852; PC (DOS) Latin 2IBM855IBM/MS code page 855IBM775IBM/MS code page 775IBM866IBM/MS code page 866balticISO-IR-179; BalticKEYBCS2Kamenicky encoding; KEYBCS2macceMacintosh Central EuropeanmaccyrMacintosh CyrillicECMA-113Ecma Cyrillic; ECMA-113KOI-8_CS_2KOI8-CS2 code ('T602')KOI8-RKOI8-R CyrillicKOI8-UKOI8-U CyrillicKOI8-UNIKOI8-Unified CyrillicTeX(La)TeX control sequencesUCS-2Universal character set 2 bytes; UCS-2; BMPUCS-4Universal character set 4 bytes; UCS-4; ISO-10646UTF-7Universal transformation format 7 bits; UTF-7UTF-8Universal transformation format 8 bits; UTF-8CORKCork encoding; T1GBKSimplified Chinese National Standard; GB2312BIG5Traditional Chinese Industrial Standard; Big5HZHZ encoded GB2312行结束符:
/LFLF line terminators/CRLFCRLF line terminatorsN.A.Mixed line terminatorsN.A.Surrounded by/intermixed with non-text data/21Byte order reversed in pairs (1,2 -> 2,1)/4321Byte order reversed in quadruples (1,2,3,4 -> 4,3,2,1)N.A.Both little and big endian chunks, concatenated/qpQuoted-printable encoded各国语言编码集:
BulgarianCP1251 ISO-8859-5 IBM855 maccyr ECMA-113CzechISO-8859-2 CP1250 IBM852 KEYBCS2 macce KOI-8_CS_2 CORKEstonianISO-8859-4 CP1257 IBM775 ISO-8859-13 macce balticCroatianCP1250 ISO-8859-2 IBM852 macce CORKHungarianISO-8859-2 CP1250 IBM852 macce CORKLithuanianCP1257 ISO-8859-4 IBM775 ISO-8859-13 macce balticLatvianCP1257 ISO-8859-4 IBM775 ISO-8859-13 macce balticPolishISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORKRussianKOI8-R CP1251 ISO-8859-5 IBM866 maccyrSlovakCP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORKSloveneISO-8859-2 CP1250 IBM852 macce CORKUkrainianCP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyrChineseGBK BIG5 HZ 1 0
- 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题
- 解决在linux下用eclipse打开windows文本文件产生中文乱码的问题
- JAVA应用在LINUX环境下中文乱码问题处理
- 关于解决Mysql中文乱码问题处理,Windows\Linux\Unix
- Linux系统下mysql中文乱码问题
- linux/unix下执行crontab定时任务中文乱码问题
- windows下的文本文件在linux下查看,中文显示乱码
- Windows下编码在Linux系统下中文乱码解决方案
- java在linux系统下文件夹出现中文乱码的问题
- netbeans在linux环境下中文乱码的处理
- netbeans在linux环境下中文乱码的处理
- dom4j处理xml在linux环境下中文乱码
- 【解决】在Linux系统下,使用cat查看含有中文的文本文件正常,但是使用vim打开却是乱码的解决方法
- 关于 iconv UCS-2 中文乱码问题
- 关于 iconv UCS-2 中文乱码问题
- linux服务器下XP客户端命令提示中文乱码问题
- 系统在英文状态下调用 MultiByteToWideChar 中文乱码问题
- UNIX中文乱码问题
- 怎么写mysql存储过程,并用php调用它?
- 《软件工程》感受
- mongodb存储引擎
- FatFS文件系统 (每条指令讲的都很细)
- 点缀-----未读信息小圆点的简洁实现
- 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题
- linux命令
- JAVA中synchronized和lock详解 (r)
- 获取软键盘高度和生成9-patch
- Codeforces Round #333 (Div. 2) E. Kleofáš and the n-thlon (概率dp)
- ios 使用Quartz 2D画虚线 - little_star
- CCF:201604-1 折点计数(C++)
- 查看jdk源码
- android对内存的管理