自由空间

free space

  VC知识库BLOG :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  82 随笔 :: 1 文章 :: 237 评论 :: 0 Trackbacks
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

留言簿(23)

随笔分类

随笔档案

文章档案

相册

vckbase

搜索

最新评论

阅读排行榜

评论排行榜

 

第二版本:
#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 自由空间 阅读(3203) 评论(5)  编辑 收藏

评论

# re: GB2312转换成UF16 2008-03-27 14:15 优酷青苹果
会出现乱码吗?? 正需要此代码,顶。

# re: GB2312转换成UF16 2008-04-03 17:05 晓寒
小鸟,你这里要使用iconv库。。。。


# re: GB2312转换成UF16 2008-04-03 17:06 晓寒
不如直接用python转好了。几句话就搞定。 :P


# to:晓寒 2008-04-04 22:33 freedk
python是强啊!!!

# re: GB2312转换成UF16 2008-09-23 02:01 mud pump parts
什么环境下编译的。

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]