|
|
发表于 2005-4-15 17:33:16
|
显示全部楼层
在我的linux box编译通过的代码,输出为8
楼主概念不清,utf8和unicode是两码事呀,怎能混为一谈。
utf8表述一个字符有可能会用到5个字节,而unicode目前两种流行的实现。
ucs2两个字节,ucs4四个字节。
- #include <stdio.h>
- #include <locale.h>
- #include <wchar.h>
- int main()
- {
- size_t len;
- char * locp;
- char *src="中华人民共和国a";
- size_t nbytes;
- wchar_t dst[100];
- mbstate_t state;
- memset (&state, '\0', sizeof (state));
- len = strlen(src);
- printf("mbs len is %d\n",len);
- locp = setlocale(LC_ALL, "zh_CN.gbk");
- printf("You have set Locale to %s\n",locp);
- mbsrtowcs(dst,&src,len,&state);
- printf("%d\n", wcslen(dst));
- //如果用ssh,尝试一下将转换后的字符串输出,如果是真实终端,结果只能是乱码
- printf("%ls\n",dst);
- return 0;
- }
复制代码 |
|