自由空间
free space
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

留言簿(22)

随笔分类

随笔档案

文章档案

相册

vckbase

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-81 文章-1 评论-227 Trackbacks-0

 

第二版本:
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<iconv.h>
#include 
<errno.h>
#include 
<string.h>

int main(void)
{
    unsigned 
char *src = "中国A1"/* 需转换的字串 */
    unsigned 
char dst[256= {0}/* 转换后的内容 */
    unsigned 
char buf[1024= {0}/* 格式化转换后的字串 */
    size_t src_len 
= strlen(src);
    size_t dst_len 
= sizeof(dst);
    
int len = 8+2;   //4个字符*2等于8,再加上UTF-16的前两个字符
    unsigned char *in = src;
    unsigned 
char *out = dst;
    
    iconv_t cd;
    
int i;  
    
int j;  
    
    cd 
= iconv_open("UTF-16""GB2312"); /* 将GB2312字符集转换为UTF-16字符集 */
    
if ((iconv_t)-1 == cd)
    
{
        printf(
"iconv_open error:%s ",strerror(errno));
        
return -1;
    }

 
    printf(
"src: %s,src_len: %d ", src,src_len);
    
if(iconv(cd, &in&src_len, &out&dst_len)<0/* 执行转换 */
    
{
        printf(
"iconv error:%s ",strerror(errno));
        
return -1;
   }
 
 
   j 
= 0;  

    
for (i = 0; i < len; i++)
    
{
        printf(
"%.02X ", dst[i]);
        buf[j
++= '%';
        snprintf(buf 
+ j, 3"%.02X", dst[i]);
        j 
+= 2
    }

 
    printf(
" ");
  
    
if(iconv_close(cd)<0
    
{
        printf(
"iconv_close error:%s ",strerror(errno));
        
return -1;
    }

    
return 0;
}


posted on 2008-03-27 11:19 自由空间 阅读(1716) 评论(5)  编辑 收藏
Comments
  • # re: GB2312转换成UF16
    优酷青苹果
    Posted @ 2008-03-27 14:15
    会出现乱码吗?? 正需要此代码,顶。
  • # re: GB2312转换成UF16
    晓寒
    Posted @ 2008-04-03 17:05
    小鸟,你这里要使用iconv库。。。。
  • # re: GB2312转换成UF16
    晓寒
    Posted @ 2008-04-03 17:06
    不如直接用python转好了。几句话就搞定。 :P
  • # to:晓寒
    freedk
    Posted @ 2008-04-04 22:33
    python是强啊!!!
  • # re: GB2312转换成UF16
    mud pump parts
    Posted @ 2008-09-23 02:01
    什么环境下编译的。
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]