源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

为SQLite3提供一个ANSI到UTF8的互转函数

  • 时间:2021-06-15 04:48 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:为SQLite3提供一个ANSI到UTF8的互转函数
在使用Sqlite3时必须要用到的   使用方法:   char* src = "...";//待转换的ANSI或UTF8字符串   char* dst = NULL;//保存由函数内部分配的内存指针, 不需要传入内存缓冲区的   转换为UTF-8:to_utf8(src, &dst);   转换为ANSI:to_gb(src, &dst);   返回值:零 - 失败, 非零 - 成功.   注意:如果操作成功, 需要手动释放函数内部分配的空间:
[u]复制代码[/u] 代码如下:
if(dst) {     free(dst);     dst = NULL; }
代码:
[u]复制代码[/u] 代码如下:
#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, 0, 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, 0, psrc, -1, pws, ret);     ret2 = WideCharToMultiByte(CP_UTF8, 0, pws, -1, NULL, 0, NULL, NULL);     if(ret2<=0){         free(pws);         return 0;     }     putf = (char*)malloc(ret2);     if(!putf){         free(pws);         return 0;     }     if(WideCharToMultiByte(CP_UTF8, 0, pws, ret, putf, ret2, NULL, NULL)){         *ppdst = putf;         free(pws);         return 1;     }else{         free(pws);         free(putf);         *ppdst = NULL;         return 0;     } } int to_gb(char* psrc, char** ppdst) {     int ret, ret2;     wchar_t* pws = NULL;     char* pgb = NULL;     ret = MultiByteToWideChar(CP_UTF8, 0, 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_UTF8, 0, psrc, -1, pws, ret);     ret2 = WideCharToMultiByte(CP_ACP, 0, pws, -1, NULL, 0, NULL, NULL);     if(ret2<=0){         free(pws);         return 0;     }     pgb = (char*)malloc(ret2);     if(!pgb){         free(pws);         *ppdst = NULL;         return 0;     }     if(WideCharToMultiByte(CP_ACP, 0, pws, -1, pgb, ret2, NULL, NULL)){         *ppdst = pgb;         free(pws);         return 1;     }else{*ppdst = 0;         free(pgb);         free(pws);         return 0;     } }
by: 女孩不哭
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部