原因:Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致。Linux下使用的编码是utf8,而Windows使用的是gb18030。因此,解决Linux打开txt文件中文乱码可有如下方法。
方法一:使gedit支持gb18030格式的编码
直接双击被打开的文件默认用gedit打开,这种方式不行。可行的方式 是先打开gedit ,再选择软件左上角打开出现乱码的文件。gedit就会出现如下第一个图的提示,在黄色区域左下角有个当前的编码下拉框,点开可以自己选择想要使用的编码,如果已存在的编码方式不能打开文件,可以选择最后一项add。
然后就出现下面这张图,在备选编码中选择文件的编码格式,然后点击左下角的+号,加入到右栏中以供选择,然后点击应用,就可以在下拉框选择该文件的编码了。一般情况下windows的编码是gb18030,但也可能你打开的不是这个格式,怎么知道文件是什么编码格式呢?可以在命令行执行"chardet3 test.txt ",test.txt是将要被打开的文件,返回结果包含文件编码格式内容。
正常了。
备选方法:
gedit 使用一个编码匹配列表,只有在这个列表中的编码才会进行匹配,不在这个列表中的编码将显示为乱码。您要做的就是将 GB18030 加入这个匹配列表。
- 命令行方式,适用于所有 Ubuntu 用户。
复制以下命令到终端中,然后回车即可:
gconftool-2 --set --type=list --list-type=string /apps/gedit-2/preferences/encodings/auto_detected "[UTF-8,CURRENT,GB18030,BIG5-HKSCS,UTF-16]"
有可能你的系统已经没有/apps/gedit-2/preferences/encodings这个节点了。
gedit升级版本之后,节点的位置可能改在了org/gnome/gedit/preferences/encoding。这里根据自己情况而定。下面图形化方式也一样。
- 图形化方式,适用于 Ubuntu 用户,而不适用于 KUbuntu/XUbuntu 用户。
打开Terminal输入命令“gconf-editor”,(如果没有安装的话,输入命令安装:sudo apt-get install gconf-editor ),进入环境配置,依次展开“/apps/gedit-2/preferences/encodings/”,然后点击右上方的“auto_detected”,在弹出的页面选择添加gb18030并且向上置顶。设置完成以后所有打开的txt的文件中文显示都不会乱码了。如图所示:
参考:https://blog.csdn.net/samantha_sun/article/details/6347645
方法二:将文件编码方式改为linux支持的格式utf8
把gb18030编码的original.txt转换成utf8的target.txt。这样target.txt就成为Linux支持的编码。如果你并不是想要支持那种编码,只是临时使用,则可以将文件编码格式转换成linux系统支持的格式,以gb18030转换成utf8为例:
打开Terminal,进入到txt文件所在目录,输入命令:
$ iconv -f gb18030 -t utf8 original.txt -o target.txt