zoukankan      html  css  js  c++  java
  • Http post请求数据带中文参数问题

      Http请求参数带中文参数时,如{"userName":"用户名123","password":"123456"}

      请求返回:01-用户名密码错误

      明明用户名以及密码都正确,为啥会不对呢?原来有可能是服务器编码问题,服务器一般是用UTF-8编码,需要对post的json字符串进行utf-8转码后才能被服务器端识别正确。

      提供转码函数:

     ToUtf8转码参考 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    wchar_t* AnsiToUnicode(const char* lpszStr)
    {
        
    wchar_t* lpUnicode;
        
    int nLen;

        
    if (NULL == lpszStr)
            
    return NULL;

        nLen = ::MultiByteToWideChar(CP_ACP, 
    0, lpszStr, -1NULL0);
        
    if (0 == nLen)
            
    return NULL;

        lpUnicode = 
    new wchar_t[nLen + 1];
        
    if (NULL == lpUnicode)
            
    return NULL;

        memset(lpUnicode, 
    0sizeof(wchar_t)* (nLen + 1));
        nLen = ::MultiByteToWideChar(CP_ACP, 
    0, lpszStr, -1, lpUnicode, nLen);
        
    if (0 == nLen)
        {
            
    delete[]lpUnicode;
            
    return NULL;
        }

        
    return lpUnicode;
    }

    bool UnicodeToUtf8const wchar_t *lpszUnicode, char *lpszUtf8, int nLen )
    {
        
    int nRet = ::WideCharToMultiByte(CP_UTF8, 0, lpszUnicode, -1, lpszUtf8, nLen, NULLNULL);
        
    return (0 == nRet) ? FALSE : TRUE;
    }

    bool AnsiToUtf8const char *lpszAnsi, char *lpszUtf8, int nLen )
    {
        
    wchar_t *lpszUnicode = AnsiToUnicode(lpszAnsi);
        
    if (NULL == lpszUnicode)
            
    return FALSE;

        
    int nRet = UnicodeToUtf8(lpszUnicode, lpszUtf8, nLen);

        
    delete[]lpszUnicode;

        
    return (0 == nRet) ? FALSE : TRUE;
    }

  • 相关阅读:
    双向链表

    一个简单makefile
    内存管理
    队列
    postgresql表结构查询sql
    postgresql 命令
    NSMutableDictionary 中使用setValueForKey 和 setObjectForKey有什么区别?
    ViewController 生命周期
    程序启动过程
  • 原文地址:https://www.cnblogs.com/MakeView660/p/9179085.html
Copyright © 2011-2022 走看看