|

楼主 |
发表于 2006-11-30 09:32:31
|
显示全部楼层
Post by DoDo
如果想要从 GBK 转为 UCS2,首先要确保你的代码是以 GBK 编码保存并编译的
另外楼主最好帖一下你调用 iconv 的那一部分代码,也许有错
我以前写这种程序时是用 UTF8 转 UCS2 的,自己写了一个转换函数,非常容易。GBK 的要麻烦一些,我当时是用查表法实现的。
代码如下:
- int code_convert(char *from, char *to)
- {
- int iMax = 1024, iFromLen, iToLen, iRet;
- iconv_t cd;
- char *pFrom, *pTo;
- char *from_code = "GB18030";
- char *to_code = "UCS2";
-
- if(from == NULL || to == NULL) return -1;
- cd = iconv_open((const char *)to_code, (const char *)from_code);
- if (cd == (iconv_t)-1) {
- return -1;
- }
- pFrom = from;
- pTo = to;
- iFromLen = strlen(pFrom);
- iToLen = iMax;
-
- iRet = iconv(cd, &pFrom, &iFromLen, &pTo, &iToLen);
- iconv_close(cd);
- if (iRet == -1)
- {
- return -1;
- }
- pTo[iMax - iToLen] = 0;
- printf("%d -- %d\n", iMax - iToLen, iRet);
- return 0;
- }
复制代码
奇怪的是iRet返回为0,但是iToLen确被修改过了。为什么呢? |
|