| 
                         在使用Sqlite3时必须要用到的 
  使用方法: 
  char* src = "...";//待转换的ANSI或UTF8字符串   char* dst = NULL;//保存由函数内部分配的内存指针,不需要传入内存缓冲区的 
  转换为UTF-8:to_utf8(src,&dst);   转换为ANSI:to_gb(src,&dst); 
  返回值:零 - 失败,非零 - 成功.   注意:如果操作成功,需要手动释放函数内部分配的空间: 
复制代码 代码如下: if(dst) {     free(dst);     dst = NULL; }
  
代码: 
复制代码 代码如下: #include <windows.h> #include <stdio.h>int to_utf8(char* psrc,char** ppdst) {     int ret,ret2;     wchar_t* pws = NULL;     char* putf = NULL; 
    ret = MultiByteToWideChar(CP_ACP,psrc,-1,NULL,0);     if(ret<=0){         *ppdst = NULL;         return 0;     }     pws = (wchar_t*)malloc(ret*2);     if(!pws){         *ppdst = NULL;         return 0;     }     MultiByteToWideChar(CP_ACP,pws,ret);     ret2 = WideCharToMultiByte(CP_UTF8,NULL);     if(ret2<=0){         free(pws);         return 0;     }     putf = (char*)malloc(ret2);     if(!putf){         free(pws);         return 0;     }     if(WideCharToMultiByte(CP_UTF8,ret,putf,ret2,NULL)){         *ppdst = putf;         free(pws);         return 1;     }else{         free(pws);         free(putf);         *ppdst = NULL;         return 0;     } } 
int to_gb(char* psrc,ret2;     wchar_t* pws = NULL;     char* pgb = NULL;     ret = MultiByteToWideChar(CP_UTF8,0);     if(ret<=0){         *ppdst = NULL;         return 0;     }     pws = (wchar_t*)malloc(ret*2);     if(!pws){         *ppdst = NULL;         return 0;     }     MultiByteToWideChar(CP_UTF8,ret);     ret2 = WideCharToMultiByte(CP_ACP,NULL);     if(ret2<=0){         free(pws);         return 0;     }     pgb = (char*)malloc(ret2);     if(!pgb){         free(pws);         *ppdst = NULL;         return 0;     }     if(WideCharToMultiByte(CP_ACP,pgb,NULL)){         *ppdst = pgb;         free(pws);         return 1;     }else{*ppdst = 0;         free(pgb);         free(pws);         return 0;     } }
  
by: 女孩不哭                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |