HELP!字符集转换,ISO-8859-1与UTF-8的转换
各位大虾:
小弟在HP-UNIX下调用web service服务,要实现从ISO-8859-1字符到UTF-8的转换,请问由什么比较好的办法或者资料。小弟知道有个iconv的字符转换包,不过没有用到。主要是解决中文转换的问题。
目前根据utf-8的定义,用以下两种方法实现字符集的转换
1: 格式
2: 在 0x000以及在0x0080-0x07FF之间的字符使用下面来表示:
1 | 1 | 0 | bits 6-10 | 1 | 0 | bits 0-5
其中第二种,通过移位实现宽字节
char * s; //转换的字符
wchar_t wc;
register int m = mbtowc(&wc, s - 1, MB_CUR_MAX);
char tmp[16];
然后通过移位实现,
register char *t = tmp;
if (c < 0x0800)
{
*t++ = (char)(0xC0 | ((c >> 6) & 0x1F));
}
else
{
if (c < 0x010000)
{
*t++ = (char)(0xE0 | ((c >> 12) & 0x0F));
}
else
{
if (c < 0x200000)
{
*t++ = (char)(0xF0 | ((c >> 18) & 0x07));
}
else
{
if (c < 0x04000000)
{
*t++ = (char)(0xF8 | ((c >> 24) & 0x03));
}
else
{
.............
}
}
*t++ = (char)(0x80 | ((c >> 6) & 0x3F));
}
*t++ = (char)(0x80 | (c & 0x3F)); // | 1 | 0 | bits 0-5
*t = '\0';
}
中文转换后显示的是乱码(英文没事),但是调用web_servcie服务能够成功,若是不转换,则有中文时,会提示无法解析。