Linux下windows中文文本文件乱码问题

table of content:linux

  1. 乱码问题
  2. 用gedit选择正确的字符编码打开文件
  3. 文件转码
  4. 总结

 

§乱码windows

Fedora安装时默认用UTF-8字符编码方式, 这么作有国际化的好处(和不少用utf-8的地方兼容), 可是也有兼容问题. 好比:工具

中文编码在windows下不是utf-8编码, 由于政策要求, 在中国销售的软件要用国标码 (即GBK, GB2312, GB18030(最新的))网站

因此中文windows用GB18030的编码, 这就致使一个小问题. 在linux下打开windows的文件出现乱码, 如图编码

 

用Gedit打开一个GB18030编码的文件 (双击打开时)spa

为何会这样, 由于gedit用解码utf-8的方式编码(decode) 用GB18030编码的文本, 就像用解释英语解释一段法语同样,翻译出一堆没意义的句子.命令行

 

§以正确字符编码(character encodings)打开翻译

解决乱码的方法很简单, gedit自己支持不少种字符编码, 如图code

1. 用gedit的打开Open打开文件,blog

选择其它文件(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...

因此仍是不够"智能"啊..这些软件...

相关文章
相关标签/搜索