table of content:

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

§乱码

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- 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- text, with CRLF line terminators
$ iconv -f gb2312 -t utf- win_gb2312.txt -o utf_encoding.txt  # (-o选项指定输出文件)
$ file utf_encoding.txt
utf_encoding.txt: UTF- Unicode text, with CRLF line terminators

§总结

这些方法都有不可忽视的缺点: 那就是你要提前知道文件的原编码方式是啥, 不然就要一个一个试.

如何查看一个文件的编码方式, 可以用file命令查看, 但是file命令不可靠, 一个gb2312编码的文件file命令判断为ISO-8859...

所以还是不够"智能"啊..这些软件...

Linux下windows中文文本文件乱码问题的更多相关文章

  1. 解决linux下unzip中文有乱码的问题

    xxx.zip 中有中文的文件,在linux下unzip就会有乱码. 解决办法:安装7zip 去http://sourceforge.net/projects/p7zip/files/latest/d ...

  2. Linux下JDK中文字体乱码

    java生成图片的时候用到字体,但是liunx系统没有这些字体需要把C:\Windows\Fonts 上传到/usr/local/jdk1.8.0_171/jre/lib/fonts 重启tomcat ...

  3. Linux 中 Windows 中文乱码

    Linux 下 Windows 源代码中文乱码 由于 windows 和 linux 对文本的编码方式不同,所以经常会有 windows 中生成的文本在 linux 中打开乱码的情况. 比如: 我面临 ...

  4. 解决Linux下Oracle中文乱码的一些心得体会 ,转自

    以下转自 http://blog.itpub.net/29151695/viewspace-1173238/ 最近在linux上安装完oracle 10gR2后,又遇到了字符集乱码的问题,之前在网上找 ...

  5. Linux 下安装中文 ctex 指南

    大家在用 $\LaTeX$ 进行中文排版时相信会遇到不少问题,而$\textbf{ctex}$套装的出现则有效的解决了这一问题,只要安装了$\textbf{ctex}$那么在文中不用进行引用设置就可以 ...

  6. mysql 控制台环境下查询中文数据乱码,插入、更新中文数据不成功

    mysql 控制台环境下查询中文数据乱码,插入.更新中文数据不成功         登录mysql密码是加入编码参数--default-character-set,中文用gbk mysql -uroo ...

  7. Linux 下安装中文字体

    本文以安装黑体为例,简单演示如何在Linux下安装中文字体. 环境信息介绍 [root@thatsit ~]# cat /etc/redhat-release CentOS Linux release ...

  8. 解决Linux下sqlplus中文乱码问题

    错误现象:在windows下用其他工具访问oracle,确认中文正常显示.在Linux下使用sqlplus查询数据表中文内容出现乱码. 分析及解决:因为windows下正常,所以问题应出现在Linux ...

  9. linux下python中文乱码解决方案

    1. 场景描述 linux服务器下安装了Anaconda3,执行Pyhton的K-means算法,结果出现如下图的中文字符乱码.上次已经解决了,忘记记录解决流程了,这次配置了一台新的服务器,又出现,默 ...

随机推荐

  1. [笔记]Go语言写文件几种方式性能对比

    Go语言中写文件有多种方式,这里进行如下几种方式的速度对比: 打开文件,写入内容,关闭文件.如此重复多次 打开文件,写入内容,defer 关闭文件.如此重复多次 打开文件,重复多次写入内容,defer ...

  2. springmvc 标签

    https://www.baeldung.com/spring-mvc-form-tags     1. Overview In the first article of this series we ...

  3. IE6/7 下:inline-block解决方案

    6/IE7下:inline-block解决方案   IE6/IE7下对display:inline-block的支持性不好. 1.inline元素的display属性设置为inline-block时, ...

  4. return false 和 return true

    常规用法 在普通函数中:return 语句终止函数的执行,并返回一个指定的值给函数调用者,一般会用一个变量接收这个返回值再进行其它处理.如果未指定返回值,则返回 undefined 其中,返回一个函数 ...

  5. CSS 3 中的多列属性

    .column-count <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. 转一篇Git代码回滚技巧

    转 https://github.com/geeeeeeeeek/git-recipes/wiki/5.2-代码回滚:Reset.Checkout.Revert的选择

  7. 总结一下TODO的用法

      1.设置任务的标签 WINDOW->preference->java->complier->task tags加一个 DONE:NORMAL表示已经完成的任务2. java ...

  8. nginx 403错误

    1.出现此种错误的原因有可能是所有者对目录没有写的权限,此时可用chmod 777 目录名 先完全放开权限,如果问题解决,则在慢慢缩小访问权限. 解决办法:chown -R nginx_user:ng ...

  9. java XML解析

    package com.kpsh.myself; import java.io.File;import java.io.FileInputStream;import java.util.List; i ...

  10. NumPy字节交换

    NumPy - 字节交换 我们已经知道,存储在计算机内存中的数据取决于 CPU 使用的架构. 它可以是小端(最小有效位存储在最小地址中)或大端(最小有效字节存储在最大地址中). numpy.ndarr ...