Linux下windows中文文件乱码问题
Posted hahahahahahahaha
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下windows中文文件乱码问题相关的知识,希望对你有一定的参考价值。
table of content:
- 乱码问题
- 用gedit选择正确的字符编码打开文件
- 文件转码
- 总结
§乱码
Fedora安装时默认用UTF-8字符编码方式, 这么做有国际化的好处(和很多用utf-8的地方兼容), 但是也有兼容问题. 比如:
中文编码在windows下不是utf-8编码, 因为政策要求, 在中国销售的软件要用国标码 (即GBK, GB2312, GB18030(最新的))
所以中文windows用GB18030的编码, 这就导致一个小问题. 在linux下打开windows的文件出现乱码, 如图
用Gedit打开一个GB18030编码的文件 (双击打开时)
为什么会这样, 因为gedit用解码utf-8的方式编码(decode) 用GB18030编码的文本, 就像用解释英语解释一段法语一样,翻译出一堆没意义的句子.
§以正确字符编码(character encodings)打开
解决乱码的方法很简单, gedit本身支持很多种字符编码, 如图
1. 用gedit的打开Open打开文件,
选择其它文件(other documents...)
2.
(左下角的Character encoding 处选择正确的字符编码)
然后,文件就正常打开啦:
(请忽略文本内容, 只是刚好是这个文件而已, 不是给网站打广告......)
此外, 如果用命令行的方式打开一个文件可以用gedit --encoding 相应编码 的方式来打开
§转码
用gedit打开一个文件
(此文件用gb2312编码)
另存为 saveas 此时在左下角选择utf-16的编码,点击save
此时新文件就是utf-16格式的, 在终端用file命令可以看到文件的新编码
$ file 用utf-16保存的新文本.txt 用utf-16保存的新文本.txt: Little-endian UTF-16 Unicode text, with CRLF, CR line terminators
也有其它工具用来转码, 将gb18030转为utf-8, 比如 iconv
用法: iconv [options] [-f from-encoding] [-t to-encoding] [inputfile]...
$ file win_gb2312.txt win_gb2312.txt: ISO-8859 text, with CRLF line terminators $ iconv -f gb2312 -t utf-8 win_gb2312.txt -o utf_encoding.txt # (-o选项指定输出文件) $ file utf_encoding.txt utf_encoding.txt: UTF-8 Unicode text, with CRLF line terminators
§总结
这些方法都有不可忽视的缺点: 那就是你要提前知道文件的原编码方式是啥, 不然就要一个一个试.
如何查看一个文件的编码方式, 可以用file命令查看, 但是file命令不可靠, 一个gb2312编码的文件file命令判断为ISO-8859...
所以还是不够"智能"啊..这些软件...
以上是关于Linux下windows中文文件乱码问题的主要内容,如果未能解决你的问题,请参考以下文章