关于gcc编译器支持unicode的问题

ghosty 2005-03-03 11:35:10
假定有一个程序,想打印出中文字符的unicode码:
#include <stdio.h>
#include <string.h>

int main()
{
wchar_t *p = L"你好";

int i = 0;
int len = wcslen(p) * sizeof(wchar_t);
char * pp = (char*)p;
for (;i <= len; i++) {
printf("0x%02x ", pp[i-1] & 0xff);
}
return 0;
}

在windows下用vc编译得出的结果是正确的unicode码:
0x00 0x60 0x4f 0x7d 0x59

但在windows下用gcc编译器编译出来的结果却是:
0x00 0xc4 0x00 0xe3 0x00 0xba 0x00 0xc3

现在想要的是用gcc编译器编译出vc的结果,不知道gcc应该用些什么参数编译才行?
望高手赐教,谢谢
...全文
723 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰箭 2005-03-22
  • 打赏
  • 举报
回复
gz
yjh1982 2005-03-03
  • 打赏
  • 举报
回复
unix gcc下也许可以
Dong 2005-03-03
  • 打赏
  • 举报
回复
gcc!!我这里没有环境,帮你顶先,明天去公司后再看看
ghosty 2005-03-03
  • 打赏
  • 举报
回复
to gdhyj:这个结果与在windows下用gcc编译出的差不多,但是不是我想要的

to DelphiGuy: 那就是说不可能通过修改gcc编译器的选项使之能产生unicode编码吗?
  • 打赏
  • 举报
回复
很正常,gcc(还有Linux/Unix在API层面)不使用原生的unicode编码,而是使用UTF8编码。
主要是为了兼容性的考虑,不用象Windows那样准备两套string处理APIs,xxxA、xxxW之类的。
gdhyj 2005-03-03
  • 打赏
  • 举报
回复
linux下的gcc编译后执行的结果是:0xc4 0x00 0x00 0x00 0xe3 0x00 0x00 0x00 0xba 0x00 0x00 0x00 0x21 0x00 0x00 0x00
ghosty 2005-03-03
  • 打赏
  • 举报
回复
但是目前要转换的程序比较多,不可能一一用api转换
还是希望在gcc编译器上解决
heroboy2000 2005-03-03
  • 打赏
  • 举报
回复
L"" 怎么转换字符串取决于编译器。如果不能使用vc的话,那么就直接使用win32api转换吧
piaozi2003 2005-03-03
  • 打赏
  • 举报
回复
for (;i <= len; i++) {
printf("0x%02x ", pp[i-1] & 0xff);
}
i的初始化值是0,那这里不是变成了-1?
ghosty 2005-03-03
  • 打赏
  • 举报
回复
问题是现在要求在windows环境下运行

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧