日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

AnsiToUtf8 和 Utf8ToAnsi

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AnsiToUtf8 和 Utf8ToAnsi 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在服務端數據庫的處理當中,涉及中文字符的結構體字段,需要轉為Utf8后再存儲到表項中。
從數據庫中取出包含中文字符的字段后,如果需要保存到char *類型的結構體成員中,需要轉為Ansi后再保存。
從數據庫中取出類型數字的字段后,如果需要保存到int型的結構體成員中,需要調用atoi函數進行處理后再保存。

1 static char *AnsiToUtf8(char *pchAnsi)2 {3     int uSize=0;4     WCHAR *pwText =NULL;5     char *pchUtf8=NULL;6     int nUtf8Len = 0;7 8     if(NULL == pchAnsi)9     {10         return NULL;11     }12 13     do 14     {15         uSize = MultiByteToWideChar(CP_ACP,0,pchAnsi,-1,NULL,0);16         if(uSize <=0)17         {18             break;19         }20         pwText = (wchar_t*)malloc((uSize+1)*sizeof(wchar_t));21         if(!pwText)22         {23             break;24         }25 26         memset((void*)pwText,0,sizeof(wchar_t)*(uSize+1));27         MultiByteToWideChar(CP_ACP,0,pchAnsi,-1,pwText,uSize);28 29         //widechar to utf830         nUtf8Len = WideCharToMultiByte(CP_UTF8, 0, pwText, -1, NULL, 0, NULL, NULL);31         if (0 >= nUtf8Len)32         {33             break;34         }35 36         pchUtf8=(char *)malloc(nUtf8Len+2);37         if(NULL == pchUtf8)38         {39             break;40         }41         memset(pchUtf8,0,nUtf8Len+2);42 43         nUtf8Len = WideCharToMultiByte(CP_UTF8, 0, pwText, -1, pchUtf8, nUtf8Len, NULL, NULL);44         if (0 >= nUtf8Len)45         {46             free(pchUtf8);47             pchUtf8 = NULL;48             break;49         }50 51 52     } while (0);53 54     if(NULL!=pwText)55     {56         free(pwText);57     }58 59     return pchUtf8;60 }61 62 static char *Utf8ToAnsi(char *pchUtf8)63 {64     int uSize=0;65     WCHAR *pwText =NULL;66     char *pchAnsic=NULL;67     int ansicStrLen = 0;68 69     if(NULL == pchUtf8)70     {71         return NULL;72     }73 74     do 75     {76         uSize = MultiByteToWideChar(CP_UTF8,0,pchUtf8,-1,NULL,0);77         if(uSize <=0)78         {79             break;80         }81         pwText = (wchar_t*)malloc((uSize+1)*sizeof(wchar_t));82         if(!pwText)83         {84             break;85         }86         memset((void*)pwText,0,sizeof(wchar_t)*(uSize+1));87         MultiByteToWideChar(CP_UTF8,0,pchUtf8,-1,pwText,uSize);88 89         //widechar to utf890         ansicStrLen = WideCharToMultiByte(CP_ACP, 0, pwText, -1, NULL, 0, NULL, NULL);91         if (0 >= ansicStrLen)92         {93             break;94         }95 96         pchAnsic=(char *)malloc(ansicStrLen+2);97         if(NULL == pchAnsic)98         {99             break;
100         }
101         memset(pchAnsic,0,ansicStrLen+2);
102 
103         ansicStrLen = WideCharToMultiByte(CP_ACP, 0, pwText, -1, pchAnsic, ansicStrLen, NULL, NULL);
104         if (0 >= ansicStrLen)
105         {
106             free(pchAnsic);
107             pchAnsic = NULL;
108             break;
109         }
110 
111     } while (0);
112 
113     if(NULL != pwText)
114     {
115         free(pwText);
116     }
117 
118     return pchAnsic;
119 
120 }

  

轉載于:https://www.cnblogs.com/zhiyewang/p/5209000.html

總結

以上是生活随笔為你收集整理的AnsiToUtf8 和 Utf8ToAnsi的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。