免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 叶叶叶Yeah
打印 上一主题 下一主题

[C] C语言里,汉字用什么存储的? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-12-15 20:11 |只看该作者
谢谢,
我还有问题:我在另一个帖子看到有个函数库iconv,其中有个函数:这个函数要提供一个存储区, ...
叶叶叶Yeah 发表于 2010-12-15 19:41

如果是中英文混写的话,你就开个最大存储区,既都按照每个字符3个字节设置缓冲。

论坛徽章:
0
12 [报告]
发表于 2010-12-15 20:26 |只看该作者
回复  叶叶叶Yeah

应该是UTF-32的,你在初始化字符串的时候在前面加个L例如L "ABC" ,这在Linux-i386下 ...
davelv 发表于 2010-12-15 20:09



    谢谢!

论坛徽章:
0
13 [报告]
发表于 2010-12-15 21:02 |只看该作者
char *

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
14 [报告]
发表于 2010-12-16 09:12 |只看该作者
回复  叶叶叶Yeah

应该是UTF-32的,你在初始化字符串的时候在前面加个L例如L "ABC" ,这在Linux-i386下 ...
davelv 发表于 2010-12-15 20:09



    是utf-16吧

论坛徽章:
0
15 [报告]
发表于 2010-12-16 10:51 |只看该作者
回复 14# noword2k
[dave@dave lab]$ cat test.c;gcc test.c;./a.out
#include<wchar.h>
#include<stdio.h>
int main()
{
        wchar_t a[] = L"你How";
        printf("%d,%d\n",wcslen(a),sizeof(a));
        return 0;
}
4,20

windows下倒是unicode-16,但是在发言前请确认下自己的范围。

论坛徽章:
0
16 [报告]
发表于 2010-12-16 14:28 |只看该作者
utf-8,一个汉字三字节

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
17 [报告]
发表于 2010-12-16 16:33 |只看该作者
回复  noword2k
[dave@dave lab]$ cat test.c;gcc test.c;./a.out
#include
#include
int main()
{
...
davelv 发表于 2010-12-16 10:51



    果然是utf-32
这样看就更清楚了:

  1. #include<wchar.h>
  2. #include<stdio.h>
  3. int main()
  4. {
  5.         wchar_t a[] = L"你How";
  6.         unsigned char *b = (unsigned char*) &a;
  7.         printf("%d,%d\n",wcslen(a),sizeof(a));
  8.         for (int i=0; i<sizeof(a); i++)
  9.         {   
  10.             printf ("0x%02x,", b[i]);
  11.         }
  12.         return 0;
  13. }
复制代码

结果
4,20
0x60,0x4f,0x00,0x00,0x48,0x00,0x00,0x00,0x6f,0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

论坛徽章:
0
18 [报告]
发表于 2010-12-16 17:22 |只看该作者
回复 17# noword2k
没错

论坛徽章:
0
19 [报告]
发表于 2010-12-17 17:26 |只看该作者
楼上各位好! 补充一个问题 形如这种用法会得出什么结果?
char buffer[128] = "测试代码";

buffer[0] = ?
buffer[1] = ?

是ASCII码么? 还是别的什么码?

论坛徽章:
0
20 [报告]
发表于 2010-12-17 22:49 |只看该作者
学习了。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP