Linux 环境c++ 编码转换

 1 #include <iconv.h>
 2 
 3 
 4 //代码转换:从一种编码转为另一种编码 
 5 
 6 static int CodeConvert(char *from_charset,char *to_charset,char *inbuf,long inlen,char *outbuf,long outlen)
 7 
 8 { 
 9 
10 iconv_t cd;    
11 
12 int rc;    
13 
14 //char **pin   =   &inbuf;    
15 
16 char *pin   =   inbuf;    
17 
18 //char **pout   =   &outbuf;    
19 
20 char *pout   =   outbuf;    
21 
22 
23 
24 cd = iconv_open(to_charset,from_charset);    
25 
26 if (cd==0)   
27 
28     return -1;    
29 
30 
31 
32 memset(outbuf,0,outlen);    
33 
34 printf("^^^^^^^^^^^^^^^^^^^^\n\n\n");
35 
36 if (iconv(cd, (char **)&pin, (size_t*)&inlen, &pout, (size_t*)&outlen)==-1)   
37 
38     return -1; 
39 
40 printf("######################\n\n\n");
41 
42 iconv_close(cd);    
43 
44 return 0; 
45 
46 } 
47 
48 //UNICODE码转为GB2312码 
49 
50 static int u2g(char *inbuf,int inlen,char *outbuf,int outlen) 
51 
52 { 
53 
54     return CodeConvert( "utf-8", "gb18030",inbuf,inlen,outbuf,outlen); 
55 
56 } 
57 
58 //GB2312码转为UNICODE码 
59 
60 static int g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen) 
61 
62 { 
63 
64 return CodeConvert( "gb18030", "utf-8",inbuf,inlen,outbuf,outlen); 
65 
66 }

猜你喜欢

转载自www.cnblogs.com/mingyue605/p/9021294.html