关于linux下汉字输出的小问题

来源:互联网 发布:带虚化的拍照软件 编辑:程序博客网 时间:2024/06/14 20:08

windows下的文档在linux下查看,汉字会出现乱码的原因?

linux下汉字用utf-8编码,而windows下采用gb2312编码。

所以为了可以正常查看,可用命令将gb2312转化为utf-8。


如何转化?

可以用shell下编码转换工具enca。用它不仅可以转换编码,还可以查看文件的原始编码,而且还支持成批转换。安装enca很简单,一般用源安装就行了,enca用法如下:


enca -L 当前语言  文件名

enca -L zh_CN file //检查文件的编码

enca -L 当前语言 -x 目标编码 文件名 

enca -L zh_CN -x UTF-8 file //将文件编码转换为”UTF-8″编码

enca -L zh_CN -x UTF-8 < file1 > file2 //如果不想覆盖原文件可以这样

除了有检查文件编码的功能以外,”enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来。


关于utf-8的问题?

常用中文字符用utf-8编码占用3个字节(大约2万多字),但超大字符集中的更大多数汉字要占4个字节(在unicode编码体系中,U+20000开始有5万多汉字)。
GBK、GB2312收编的汉字占2个字节,严格地用iso8859-1无法表示汉字,只能转为问号。
遇到的一个小问题


         本应该对齐输出的,可是怎么会有这样的结果呢?

         在linux下采用的是utf-8编码,一般的汉字占用三个字节。

ID         姓名     性别     民族     成绩    ID         Name       sex        minzu      grade     1          li         man        han        90        

         姓名连同后面的空格本应该占用11个字节,姓名占用6个字节,后面有五个空格,所以符合源代码的思想。这里由于linux下输出的问题,导致无法对齐,在linux下尽量不要将字母与汉字一起使用。(输出的结果为一个汉字在屏幕上不到两个字符,而在windows中采用gb2312编码,一个汉字只有两个字节,相当于2个字符,输出的格式就不会出现这种情况了)       

        

原创粉丝点击