zoukankan      html  css  js  c++  java
  • [转载] GB2312和UTF8转换,URLencode,C++,windows

     1 //UTF-8到GB2312的转换
     2 char* U2G(const char* utf8)
     3 {
     4     int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
     5     wchar_t* wstr = new wchar_t[len+1];
     6     memset(wstr, 0, len+1);
     7     MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);
     8     len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
     9     char* str = new char[len+1];
    10     memset(str, 0, len+1);
    11     WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);
    12     if(wstr) delete[] wstr;
    13         return str;
    14 }
    15  
    16 //GB2312到UTF-8的转换
    17 char* G2U(const char* gb2312)
    18 {
    19     int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
    20     wchar_t* wstr = new wchar_t[len+1];
    21     memset(wstr, 0, len+1);
    22     MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
    23     len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
    24     char* str = new char[len+1];
    25     memset(str, 0, len+1);
    26     WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
    27     if(wstr) delete[] wstr;
    28         return str;
    29 }        

    转自CSDN

    URLencode,URLdecode, C++,windows,转自http://blog.csdn.net/gemo/article/details/8468311:

     1 unsigned char ToHex(unsigned char x) 
     2 { 
     3   return x > 9 ? x + 55 : x + 48; 
     4 }
     5 
     6 unsigned char FromHex(unsigned char x) 
     7 { 
     8   unsigned char y;
     9   if (x >= 'A' && x <= 'Z') y = x - 'A' + 10;
    10   else if (x >= 'a' && x <= 'z') y = x - 'a' + 10;
    11   else if (x >= '0' && x <= '9') y = x - '0';
    12   else assert(0);
    13   return y;
    14 }
    15 
    16 std::string UrlEncode(const std::string& str)
    17 {
    18   std::string strTemp = "";
    19   size_t length = str.length();
    20   for (size_t i = 0; i < length; i++)
    21   {
    22     if (isalnum((unsigned char)str[i]) || 
    23       (str[i] == '-') ||
    24       (str[i] == '_') || 
    25       (str[i] == '.') || 
    26       (str[i] == '~'))
    27       strTemp += str[i];
    28     else if (str[i] == ' ')
    29       strTemp += "+";
    30     else
    31     {
    32       strTemp += '%';
    33       strTemp += ToHex((unsigned char)str[i] >> 4);
    34       strTemp += ToHex((unsigned char)str[i] % 16);
    35     }
    36   }
    37   return strTemp;
    38 }
    39 
    40 std::string UrlDecode(const std::string& str)
    41 {
    42   std::string strTemp = "";
    43   size_t length = str.length();
    44   for (size_t i = 0; i < length; i++)
    45   {
    46     if (str[i] == '+') strTemp += ' ';
    47     else if (str[i] == '%')
    48     {
    49       assert(i + 2 < length);
    50       unsigned char high = FromHex((unsigned char)str[++i]);
    51       unsigned char low = FromHex((unsigned char)str[++i]);
    52       strTemp += high*16 + low;
    53     }
    54     else strTemp += str[i];
    55   }
    56   return strTemp;
    57 }
  • 相关阅读:
    004-linux常用命令-文件搜索命令
    004-linux常用命令-权限管理命令
    004-linux常用命令-文件处理命令
    003-linux使用注意事项
    002-linux 基本网络配置
    002-keras简单应用
    001-keras简介
    006-深度学习与NLP简单应用
    论文笔记:(TOG2019)DGCNN : Dynamic Graph CNN for Learning on Point Clouds
    论文笔记:(2019CVPR)PointConv: Deep Convolutional Networks on 3D Point Clouds
  • 原文地址:https://www.cnblogs.com/warrior2005/p/4447435.html
Copyright © 2011-2022 走看看