linux下打开windows txt文件中文乱码问题

Linux操作系统下,我们有时打开在windows下的txt文件,发现在windows下能正常显示的txt文件出现了中文乱码。

如果不想看后面的,可以直接这样输入

iconv  -c  -f gbk -t utf8 xjdx.txt > xjdx.txt.utf8

其中:xjdx.txt是从windows中传入过来的文件,里面的压缩格式有误

xjdx.txt.utf8是转换过后的文件,这只是一个文件的名称,跟后面的.utf8没有关系


出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示
txt文件在linux环境下打开呈现了乱码状态。

解决方法:在linux用iconv命令,如乱码文件名为shujujiegou.txt,那么在终端输入如下命令:

[plain] view plain copy
  1. iconv -f gbk -t utf8 shujujiegou.txt > shujujiegou.txt.utf8  

用ls命令查看结果:
[plain] view plain copy
  1. $ ls  
  2. shujujiegou.txt  shujujiegou.txt.utf8  

发现重新生成了一个shujujiegou.txt.utf8文件,打开之后就能正常显示中文了。


今天在进行一个页面编码转换时,遇到了非法输入序列的错误。而查看转换后的输出,发现转换只进行了一半,未完全完成转换。

[root@gataway test]# iconv -f gb2312 -t utf-8 003.htm > 003.dd
iconv: 未知 5627 处的非法输入序列

原页面使用的是gbk2312的编码,因为查看原文的原代码时可以找到如下一行:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

而网上给出的解决方法是使用-c参数,忽略错误。使用了-c参数后,再进行转换发现可以正常进行转换,而且可以转换完成,但转换的结果里出现了乱码。

[root@gataway test]# iconv -c -f gb2312 -t utf-8 003.htm > 003.dd

iconv

后来又看到,其还支持使用//IGNORE方式(类以于-c参数),具体用了三种输入方式,看中间细微的查别:

[root@gataway test]# iconv -f gb2312//IGNORE -t utf-8//IGNORE  003.htm > pp
iconv: 未知 8731 处的非法输入序列
[root@gataway test]# iconv -f gbk//IGNORE -t utf-8//IGNORE  003.htm > pp
[root@gataway test]# iconv -f gbk2312//IGNORE -t utf-8//IGNORE  003.htm > pp
iconv: 不支持以“gbk2312//IGNORE”为源头的转换
试用“iconv --help”或“iconv --usage”以获取更多信息。
[root@gataway test]# 

有没有看出不同,这里用的是gbk正常,最后测试结果也发现。第二种输入是正常转换和显示的,第一种和最原始不加-c一样,方法三不支持。最后使用gbk代替gbk2312在使用-c参数和不使用-c参数时都能正常进行转换。

[root@gataway test]# iconv -f gbk -t utf-8  003.htm > pp
[root@gataway test]# iconv -c -f gbk -t utf-8  003.htm > pp

总结:

1、在使用iconv转换时,只看原文件的源代码里的标记格式嵌套转换不一定是对的。具体情况还在看实际的转换结果而定。

2、从转换前后的大小来看,在汉字比较多的情况下,utf-8格式要比gbk2312点用的大小要大,但utf-8的国际通用性更好(这也从另一个侧面反映了为什么网易、新浪等站用的是gbk2312,凤凰网等用的utf-8)。(后面的是从网上查到的)但在英文字符较多的页面中,utf-8格式的页面比gbk2312点用的大小要小。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值