|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 关于linux下用C数组处理中文的问题~~~
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1382
人关注过本帖
标题:
关于linux下用C数组处理中文的问题~~~
只看楼主
加入收藏
CLuck
等 级:
论坛游民
帖 子: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
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
2
楼
收藏
得分:10
两种系统的编码不一样的
授人以渔,不授人以鱼。
2012-05-11 12:44
举报帖子
使用道具
赠送鲜花
CLuck
等 级:
论坛游民
帖 子:23
专家分:17
注 册:2011-5-6
第
3
楼
收藏
得分:0
我知道编码是不同的,我也用unicode编码试过了,可输出的时候还是有乱码,我就想知道怎么解决数组输出后带乱码的问题?
2012-05-11 12:58
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
4
楼
收藏
得分:0
你调试出那两个汉字在utf-8编码是多少字节?你就知道3byte容纳得了?而且,我又不知道你是怎么把汉字存进那个数组的,你说有0,在哪里没人知道。既不知道你怎么储存,也不知道你怎么输出。
[
本帖最后由 TonyDeng 于 2012-5-11 13:03 编辑
]
授人以渔,不授人以鱼。
2012-05-11 12:59
举报帖子
使用道具
赠送鲜花
CLuck
等 级:
论坛游民
帖 子:23
专家分:17
注 册:2011-5-6
第
5
楼
收藏
得分: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
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
6
楼
收藏
得分:0
utf-8编码下,“存”和“放”两个字都是3字节,你用3字节来存放,0结束符已经溢出了。
[
本帖最后由 TonyDeng 于 2012-5-11 13:55 编辑
]
授人以渔,不授人以鱼。
2012-05-11 13:53
举报帖子
使用道具
赠送鲜花
CLuck
等 级:
论坛游民
帖 子:23
专家分:17
注 册:2011-5-6
第
7
楼
收藏
得分:0
刚改了下,能行了。太感谢了,以前我们学的都是基于windows的,我是自己转到里linux下的,以前只知道汉字是占两个字节,却不知道utf-8下是3个字节,受教了
,谢谢版主!
2012-05-11 13:58
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
8
楼
收藏
得分:0
utf-8编码的字长是可变的,最长可到4字节哦,多留一点空间。
授人以渔,不授人以鱼。
2012-05-11 13:59
举报帖子
使用道具
赠送鲜花
CLuck
等 级:
论坛游民
帖 子:23
专家分:17
注 册:2011-5-6
第
9
楼
收藏
得分:0
哦,这部分我还得找点资料好好看看啊。
2012-05-11 17:17
举报帖子
使用道具
赠送鲜花
9
1/1页
1
快速回复:
关于linux下用C数组处理中文的问题~~~
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.017910 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved