Linux 文件编码问题及iconv命令
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-2 | ISO 8859-2 standard; ISO Latin 2 |
| ISO-8859-4 | ISO 8859-4 standard; Latin 4 |
| ISO-8859-5 | ISO 8859-5 standard; ISO Cyrillic |
| ISO-8859-13 | ISO 8859-13 standard; ISO Baltic; Latin 7 |
| ISO-8859-16 | ISO 8859-16 standard |
| CP1125 | MS-windows code page 1125 |
| CP1250 | MS-Windows code page 1250 |
| CP1251 | MS-Windows code page 1251 |
| CP1257 | MS-Windows code page 1257; WinBaltRim |
| IBM852 | IBM/MS code page 852; PC (DOS) Latin 2 |
| IBM855 | IBM/MS code page 855 |
| IBM775 | IBM/MS code page 775 |
| IBM866 | IBM/MS code page 866 |
| baltic | ISO-IR-179; Baltic |
| KEYBCS2 | Kamenicky encoding; KEYBCS2 |
| macce | Macintosh Central European |
| maccyr | Macintosh Cyrillic |
| ECMA-113 | Ecma Cyrillic; ECMA-113 |
| KOI-8_CS_2 | KOI8-CS2 code ('T602') |
| KOI8-R | KOI8-R Cyrillic |
| KOI8-U | KOI8-U Cyrillic |
| KOI8-UNI | KOI8-Unified Cyrillic |
| TeX | (La)TeX control sequences |
| UCS-2 | Universal character set 2 bytes; UCS-2; BMP |
| UCS-4 | Universal character set 4 bytes; UCS-4; ISO-10646 |
| UTF-7 | Universal transformation format 7 bits; UTF-7 |
| UTF-8 | Universal transformation format 8 bits; UTF-8 |
| CORK | Cork encoding; T1 |
| GBK | Simplified Chinese National Standard; GB2312 |
| BIG5 | Traditional Chinese Industrial Standard; Big5 |
| HZ | HZ encoded GB2312 |
行结束符:
| /LF | LF line terminators |
| /CRLF | CRLF line terminators |
| N.A. | Mixed line terminators |
| N.A. | Surrounded by/intermixed with non-text data |
| /21 | Byte order reversed in pairs (1,2 -> 2,1) |
| /4321 | Byte order reversed in quadruples (1,2,3,4 -> 4,3,2,1) |
| N.A. | Both little and big endian chunks, concatenated |
| /qp | Quoted-printable encoded |
各国语言编码集:
| 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 |
Linux 文件编码问题及iconv命令的更多相关文章
- (转)剖析Linux文件编码的查看及修改
Linux文件编码的查看和修改都有不止一种做法,如果你需要在Linux中操作windows下的文件,那么很可能会经常遇到文件编码转换的问题,如何进行这项工作,也应该是经常工作在双系统下的操作者的必须掌 ...
- 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题
iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...
- windows linux 文件编码转换
查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决用Vi ...
- linux文件编码
linux下新建一个文件,或采用fopen新建,那么文件的编码是什么? 怎么查看文件编码格式: 查看文件编码file命令file ip.txt ip.txt: UTF-8 Unicode text, ...
- linux 文件编码问题
iconv -f UTF- -t gb18030 file_input -o file_output 上述命令不一定有用. 大概了解下文件编码,和vim里面的编码情况. 1 字符编码基础知识 字符编码 ...
- Linux文件权限查看及修改命令chmod
查看权限 Linux文件访问权限分为可读,可写和可执行三种. 可用ls -l命令查看,例: ls -l或者 ll 显示为 -r--r--r--. 1 root root 21 Jan 5 23:02 ...
- Linux文件权限查看及修改命令chmod,chown
查看权限 Linux文件访问权限分为可读,可写和可执行三种. 可用ls -l命令查看,例: ls -l或者 ll 显示为 -r--r--r--. 1 root root 21 Jan 5 23:02 ...
- Linux文件与目录管理常用命令
Linux文件与目录常用命令管理: 文件权限/目录权限: -rwxr-xr-x. root root Mar : zeng.txt r():可读 w():可写 x():可执行 drwxr-xr-x. ...
- Linux文件与目录操作 ls 命令(2)
说文件操作是最频繁地操作也不为过,在Linux中,使用ls命令可以列出当前目录中所有内容,本篇就先说说ls命令.本文所说的文件指文件和目录. ls命令常用选项 -a:显示指定目录下所有子目录与文件,包 ...
随机推荐
- 软件工程第四周作业-PSP
psp表格 类别 内容 开始时间 结束时间 中断时间 delta时间 学习 学习C# 10.6下午7:00 10.6下午8:00 - 60min 写代码 写主函数以及一些小的方法 10.7下午2:00 ...
- Notes of the scrum meeting before publishing(12.17)
meeting time:18:30~20:30p.m.,December 17th,2013 meeting place:3号公寓一层 attendees: 顾育豪 ...
- Android游戏音效实现
1. 游戏音效SoundPool 游戏中会根据不同的动作 , 产生各种音效 , 这些音效的特点是短暂(叫声,爆炸声可能持续不到一秒) , 重复(一个文件不断重复播放) , 并且同时播放(比如打怪时怪的 ...
- Beta完结--感想及吐槽
Beta冲刺结束啦!!! Beta冲刺结束啦!!! Beta冲刺结束啦!!! 这时候每个人的心情肯定都是非常激动的.随着Beta冲刺的结束,折磨了我们一整个学期的软工实践也差不多结束了.(实在是太不容 ...
- Java-编译后出现$1.class、$2.class等多个class文件
部署代码的时候,由于自身技术不精和疏忽,导致查询数据没有正常显示, 排除法最后只能是放置部署文件时未包括多出来的$class文件.放上去之后果然好使了,才记录下这个问题... 这是因为在我们写的类中存 ...
- kafka启动出现:Unsupported major.minor version 52.0 错误
具体的错误输出: Exception in thread "main" java.lang.UnsupportedClassVersionError: kafka/Kafka : ...
- c++:error2019,无法解析的外部命令blabla~
出现这个原因的问题汇总: 1,相应的附加库没有包含进去,注意附加库的目录是 / 2,函数没有与之对应的类,却在main中以某一类的对象调用了该方法. 其实,当错误中显示fun()成为无法解析的外部命令 ...
- ping traceroute原理
ping命令工作原理 ping命令主要是用于检测网络的连通性. Ping命令发送一个ICMP请求报文给目的IP,然后目的IP回复一个ICMP报文. 原理:网络上的机器都有唯一确定的IP地址,我们给目标 ...
- ismember matlab
ismember 判断A中的元素在B中有没有出现 LIA = ismember(A,B) for arrays A and B returns an array of the same size as ...
- hdu2121-Ice_cream’s world II
给出一个有向图,求最小树形图和它的最小的根. 分析 这个题又写了一晚上-我之前的朱刘算法写法是我乱想的,只有那道题可以过--所以去找了一份代码来看,发现我的写法超级麻烦啊,所以就学习了一下那种写法,非 ...