- 论坛徽章:
- 0
|
gaim的代码里对MSN传输的文件名解码是用这个函数:
file_name = g_utf16_to_utf8((const gunichar2 *)(bin + 20), -1,NULL, NULL, NULL);
因为我用不了GTK的库。所以我自己用的系统的如下:但是问题是我的函数解不成!
GAIM 里的函数把传入的字符串变成了(const gunichar2 *)(bin + 20)类型gunichar2也就是u_int16。而iconv是char *类型。请问从UTF16到UTF8不能用char *类型吗?或者我写的不对?各位请帮忙多谢!
static int utf16_to_utf8(char *dst, size_t dst_len, char *in)
{
int ret_conv;
iconv_t cd;
size_t inleft = strlen(in) + 1;
size_t dstleft = dst_len;
cd = iconv_open("UTF-16", "UTF-8");
if ((int)cd == -1) {
perror("iconv_open:");
return -1;
}
ret_conv = iconv(cd, &in, &inleft, &dst, &dstleft);
if (ret_conv == -1) {
perror("iconv:");
return -1;
}
iconv_close(cd);
return 1;
} |
|