求一个linux下c语言的方法

lanting918 2005-03-17 05:40:19
主要功能将一个中文字符串转换为ucs2编码
如“中国电子技术信息网”转换后为4E2D56FD75355B506280672F4FE1606F7F51

急啊
...全文
130 点赞 收藏 8
写回复
8 条回复
wtogether 2005年03月18日
sorry,看错了,用这个
int CharToUnicode(const char *cstr, char *ustr, int ul)
{
int cl = xstrlen(cstr);
iconv_t cd;
memset(ustr, 0x0, ul);
if ((cd=iconv_open("UTF-16BE", "GB2312"))==(iconv_t)-1)
{
snprintf(ustr, ul, "%s", cstr);
return(-1);
}
if (iconv(cd, &cstr, &cl, &ustr, &ul)==(size_t)-1)
{
snprintf(ustr, ul, "%s", cstr);
iconv_close(cd);
return(1);
}
iconv_close(cd);
return(0);
}
回复 点赞
wtogether 2005年03月18日
wchar_t *CharToUnicode(const char *cstr)
{
unsigned ml;
wchar_t* buf;
ml = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, cstr, -1, NULL, 0);
buf = (wchar_t *)malloc(ml * sizeof(wchar_t));
if (buf == NULL) return(buf);
memset(buf, 0x0, ml * sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, cstr, -1, buf, ml);
return(buf);
}

int main(int argc, char *argv[])
{
//4E2D56FD75355B506280672F4FE1606F7F51
unsigned char *p = "中国电子技术信息网";
wchar_t *pp = CharToUnicode(p);
while (*pp)
{
printf("%X", *pp);
pp++;
}
return 0;
}
回复 点赞
cym64039 2005年03月18日
把UTF-16BE改为unicode就可以了
回复 点赞
lanting918 2005年03月18日
to: wtogether
上面这个程序是把utf-16的转到gb2312吧?
回复 点赞
lanting918 2005年03月18日
谢谢wtogether
回复 点赞
冷月清晖 2005年03月17日
看看有没帮助:
http://www.linuxeden.com/edu/doctext.php?docid=2281
回复 点赞
hofer_song 2005年03月17日
2
哈哈
下班了
楼主没到Linux专区问问?
回复 点赞
zhousqy 2005年03月17日
up,沙發。
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告