| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1382 人关注过本帖
标题:关于linux下用C数组处理中文的问题~~~
只看楼主 加入收藏
CLuck
Rank: 2
等 级:论坛游民
帖 子:23
专家分:17
注 册:2011-5-6
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
关于linux下用C数组处理中文的问题~~~
最近在做一个题,题目中有些中文需要处理,于是本人就用到了二维数组,却发现输出时总会有乱码,而在虚拟机中的windows下做同样的测试,却一切正常,求解~~~
        数组定义为char型a[2][3],存两个汉字,然后输出这两个汉字,后面就总会带着一些乱码。定义一维数组a[3]存一个汉字时也是一样,输出该汉字后还带乱码。我在想是不是数组的最后一位中的“\0”在作祟,有谁了解的,还望多多指教.
搜索更多相关主题的帖子: 虚拟机 windows 中文 汉字 
2012-05-11 12:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
两种系统的编码不一样的

授人以渔,不授人以鱼。
2012-05-11 12:44
CLuck
Rank: 2
等 级:论坛游民
帖 子:23
专家分:17
注 册:2011-5-6
收藏
得分:0 
我知道编码是不同的,我也用unicode编码试过了,可输出的时候还是有乱码,我就想知道怎么解决数组输出后带乱码的问题?
2012-05-11 12:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你调试出那两个汉字在utf-8编码是多少字节?你就知道3byte容纳得了?而且,我又不知道你是怎么把汉字存进那个数组的,你说有0,在哪里没人知道。既不知道你怎么储存,也不知道你怎么输出。

[ 本帖最后由 TonyDeng 于 2012-5-11 13:03 编辑 ]

授人以渔,不授人以鱼。
2012-05-11 12:59
CLuck
Rank: 2
等 级:论坛游民
帖 子:23
专家分:17
注 册:2011-5-6
收藏
得分:0 
那好吧,我就是写了个测试的小程序
#include <stdio.h>
main()
{
    char a[2][3]={"存","放"};
    printf("%s ",a[0]);
    printf("%s ",a[1]);
}
存两个字,因为一个汉字是两个字节,而按字符串存的时候末尾有个"\0"结束符,所以我定义的数组大小是a[2][3]。这个程序在windows下面没什么问题,可是在我的linux下,输出了“存”,“放”两个字后,后面还有几个字节的乱码。如图:
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-05-11 13:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
utf-8编码下,“存”和“放”两个字都是3字节,你用3字节来存放,0结束符已经溢出了。

[ 本帖最后由 TonyDeng 于 2012-5-11 13:55 编辑 ]

授人以渔,不授人以鱼。
2012-05-11 13:53
CLuck
Rank: 2
等 级:论坛游民
帖 子:23
专家分:17
注 册:2011-5-6
收藏
得分:0 
刚改了下,能行了。太感谢了,以前我们学的都是基于windows的,我是自己转到里linux下的,以前只知道汉字是占两个字节,却不知道utf-8下是3个字节,受教了,谢谢版主!
2012-05-11 13:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
utf-8编码的字长是可变的,最长可到4字节哦,多留一点空间。

授人以渔,不授人以鱼。
2012-05-11 13:59
CLuck
Rank: 2
等 级:论坛游民
帖 子:23
专家分:17
注 册:2011-5-6
收藏
得分:0 
哦,这部分我还得找点资料好好看看啊。
2012-05-11 17:17
快速回复:关于linux下用C数组处理中文的问题~~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017910 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved