• VC++ UTF-8与GBK格式转换


     1 // 注释:多字节包括GBK和UTF-8  
     2 int GBK2UTF8(char *szGbk,char *szUtf8,int Len)  
     3 {  
     4     // 先将多字节GBK(CP_ACP或ANSI)转换成宽字符UTF-16  
     5     // 得到转换后,所需要的内存字符数  
     6     int n = MultiByteToWideChar(CP_ACP,0,szGbk,-1,NULL,0);  
     7     // 字符数乘以 sizeof(WCHAR) 得到字节数  
     8     WCHAR *str1 = new WCHAR[sizeof(WCHAR) * n];  
     9     // 转换  
    10     MultiByteToWideChar(CP_ACP,  // MultiByte的代码页Code Page  
    11         0,            //附加标志,与音标有关  
    12         szGbk,        // 输入的GBK字符串  
    13         -1,           // 输入字符串长度,-1表示由函数内部计算  
    14         str1,         // 输出  
    15         n             // 输出所需分配的内存  
    16         );  
    17   
    18     // 再将宽字符(UTF-16)转换多字节(UTF-8)  
    19     n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);  
    20     if (n > Len)  
    21     {  
    22         delete[]str1;  
    23         return -1;  
    24     }  
    25     WideCharToMultiByte(CP_UTF8, 0, str1, -1, szUtf8, n, NULL, NULL);  
    26     delete[]str1;  
    27     str1 = NULL;  
    28   
    29     return 0;  
    30 }  
     1 //UTF-8 GBK  
     2 int UTF82GBK(char *szUtf8,char *szGbk,int Len)  
     3 {  
     4     int n = MultiByteToWideChar(CP_UTF8, 0, szUtf8, -1, NULL, 0);  
     5     WCHAR * wszGBK = new WCHAR[sizeof(WCHAR) * n];  
     6     memset(wszGBK, 0, sizeof(WCHAR) * n);  
     7     MultiByteToWideChar(CP_UTF8, 0,szUtf8,-1, wszGBK, n);  
     8   
     9     n = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);  
    10     if (n > Len)  
    11     {  
    12         delete[]wszGBK;  
    13         return -1;  
    14     }  
    15   
    16     WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGbk, n, NULL, NULL);  
    17   
    18     delete[]wszGBK;  
    19     wszGBK = NULL;  
    20   
    21     return 0;  
    22 }
  • 相关阅读:
    java基础(七)面向对象(二)
    java基础 (六)面向对象(一)
    java基础(五)
    java基础(四)
    sqlloader导出数据和导入数据
    SQL LOADER 的用法 TXT文件导入非常之快
    在线代码对比/匹配 代码对比 在线文本比较
    JAVA 调用命令并输出
    RFC总结-SD模块
    使用BAPI_ACC_DOCUMENT_POST,创建会计凭证,用BADI扩展字段(转)
  • 原文地址:https://www.cnblogs.com/wolfplan/p/5147744.html
Copyright © 2020-2023  润新知