免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1201 | 回复: 3
打印 上一主题 下一主题

有关UTF的话题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-11 13:34 |只看该作者 |倒序浏览
本人编写国际化时碰到了一个问题,以下代码在gb环境时输出没问题,但utf-8却正常无法输出,十分苦恼!!!请指教。
#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");
//locp = setlocale(LC_ALL, "zh_CN.gb2312");
locp = setlocale(LC_ALL, "zh_CN.UTF-8");
printf("You have set Locale to %s\n",locp);
mbsrtowcs(dst,&src,len,&state);
printf("%d\n", wcslen(dst));

printf("%ls\n",dst);
//wprintf("%ls\n",dst);
return 0;
}

论坛徽章:
0
2 [报告]
发表于 2006-04-11 14:07 |只看该作者
i18n最好用gettext的标准方法.
又,setlocale把LC_ALL设置为""空,则支持所有编码--这个不敢保证正确,印象模糊了。

论坛徽章:
0
3 [报告]
发表于 2006-04-11 16:32 |只看该作者

wprintf的问题

既然可以输出宽字符,
UTF-8时,为什么却不正常输出"中华人民共和国a",
我认为是输出时碰到了null字符,所以停止输出
请指教,谢谢!

论坛徽章:
0
4 [报告]
发表于 2006-04-11 17:14 |只看该作者
char *src="中华人民共和国a"; 里面是 gb2312 编码的, 所以 utf-8 失败.
若里面是 utf-8 的, gb2312 也会失败.
国际化不是这么做的.
char *src 的内容要根据locale 转换.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP