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- 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中文文本文件乱码问题的更多相关文章
- 解决linux下unzip中文有乱码的问题
xxx.zip 中有中文的文件,在linux下unzip就会有乱码. 解决办法:安装7zip 去http://sourceforge.net/projects/p7zip/files/latest/d ...
- Linux下JDK中文字体乱码
java生成图片的时候用到字体,但是liunx系统没有这些字体需要把C:\Windows\Fonts 上传到/usr/local/jdk1.8.0_171/jre/lib/fonts 重启tomcat ...
- Linux 中 Windows 中文乱码
Linux 下 Windows 源代码中文乱码 由于 windows 和 linux 对文本的编码方式不同,所以经常会有 windows 中生成的文本在 linux 中打开乱码的情况. 比如: 我面临 ...
- 解决Linux下Oracle中文乱码的一些心得体会 ,转自
以下转自 http://blog.itpub.net/29151695/viewspace-1173238/ 最近在linux上安装完oracle 10gR2后,又遇到了字符集乱码的问题,之前在网上找 ...
- Linux 下安装中文 ctex 指南
大家在用 $\LaTeX$ 进行中文排版时相信会遇到不少问题,而$\textbf{ctex}$套装的出现则有效的解决了这一问题,只要安装了$\textbf{ctex}$那么在文中不用进行引用设置就可以 ...
- mysql 控制台环境下查询中文数据乱码,插入、更新中文数据不成功
mysql 控制台环境下查询中文数据乱码,插入.更新中文数据不成功 登录mysql密码是加入编码参数--default-character-set,中文用gbk mysql -uroo ...
- Linux 下安装中文字体
本文以安装黑体为例,简单演示如何在Linux下安装中文字体. 环境信息介绍 [root@thatsit ~]# cat /etc/redhat-release CentOS Linux release ...
- 解决Linux下sqlplus中文乱码问题
错误现象:在windows下用其他工具访问oracle,确认中文正常显示.在Linux下使用sqlplus查询数据表中文内容出现乱码. 分析及解决:因为windows下正常,所以问题应出现在Linux ...
- linux下python中文乱码解决方案
1. 场景描述 linux服务器下安装了Anaconda3,执行Pyhton的K-means算法,结果出现如下图的中文字符乱码.上次已经解决了,忘记记录解决流程了,这次配置了一台新的服务器,又出现,默 ...
随机推荐
- python之元组操作
1.元组创建 tup1 = ('physics', 'chemistry', 1997, 2000) tup2 = (1, 2, 3, 4, 5 ) tup3 = "a", &qu ...
- PL/SQL编程—控制语句
SQL> create or replace procedure sp_pro5(id_in varchar2) is v_sal mytest.salary%type; begin sel ...
- directorjs和requirejs和artTemplate模板引擒建立的SPA框架
分为4块:A : index.html壳子. 加载B init-config.js, 加载D header.html模板B : init-config.js 个人信息+路由配置+权限+渲 ...
- HDU - 6336 Problem E. Matrix from Arrays (规律+二维前缀和)
题意: for (int i = 0; ; ++i) { for (int j = 0; j <= i; ++j) { M[j][i - j] = A[cursor]; cursor = (cu ...
- J.U.C之AQS
AQS是J.U.C的核心 AQS(AbstractQueuedSynchronizer)队列同步器,AQS是JDK下提供的一套用于实现基于FIFO等待队列的阻塞锁和相关的同步器的一个同步框架. 同步器 ...
- 体系编程、SOC编程那些事儿
转:https://blog.csdn.net/yueqian_scut/article/details/49968897 笔者将从芯片IC的系统设计的角度去诠释如何掌握体系编程和SOC编程.笔者有超 ...
- Java:判断字符串是否为数字的五种方法
Java:判断字符串是否为数字的五种方法 //方法一:用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = str. ...
- 20145235李涛《网络对抗》Exp7 网络欺诈技术防范
基础问题回答 通常在什么场景下容易受到DNS spoof攻击? 使用未知的公共wifi或者在不安全的局域网下容易受到DNS spoof攻击. 在日常生活工作中如何防范以上两攻击方法? 首先要提高防范意 ...
- Java多线程基础知识总结笔记
本篇笔记记录一些在Java多线程编程中常见的关键字,比较简单和基础的就不写太详细了. 一.Thread类(其实也是应用了Runnable接口)和Runnable接口(只有一个run方法,应用该类必须重 ...
- 配置windows qt开发环境
1.解压缩MinGW-gcc440_1.zip.将解压后的文件夹复制至C盘根目录下.2.安装qt-creator-win-opensource-2.5.2.3.安装qt-win-opensource- ...