zoukankan      html  css  js  c++  java
  • C++字符转码

    wchar_t* U8ToUnicode(char* szU8)
    {
        //UTF8 to Unicode
        //由于中文直接复制过来会成乱码,编译器有时会报错,故采用16进制形式
        //char* szU8 = "abcd1234xe4xbdxa0xe6x88x91xe4xbbx96x00";
        //预转换,得到所需空间的大小
        int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0);
        //分配空间要给''留个空间,MultiByteToWideChar不会给''空间
        wchar_t* wszString = new wchar_t[wcsLen + 1];
        //转换
        ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen);
        //最后加上''
        wszString[wcsLen] = '';
        return wszString;
    }
    
    char* UnicodeToU8(wchar_t* szUnicode)
    {
        // unicode to UTF8
        //wchar_t* wszString = L"abcd1234你我他";
        //预转换,得到所需空间的大小,这次用的函数和上面名字相反
        int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL, szUnicode, wcslen(szUnicode), NULL, 0, NULL, NULL);
        //同上,分配空间要给''留个空间
        //UTF8虽然是Unicode的压缩形式,但也是多字节字符串,所以可以以char的形式保存
        char* szU8 = new char[u8Len + 1];
        //转换
        //unicode版对应的strlen是wcslen
        ::WideCharToMultiByte(CP_UTF8, NULL, szUnicode, wcslen(szUnicode), szU8, u8Len, NULL, NULL);
        //最后加上''
        szU8[u8Len] = '';
        return szU8;
    }
    
    char* UnicodeToAnsi(wchar_t* szUnicode)
    {
        // unicode to ansi
        //wchar_t* wszString = L"abcd1234你我他";
        //预转换,得到所需空间的大小,这次用的函数和上面名字相反
        int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, szUnicode, wcslen(szUnicode), NULL, 0, NULL, NULL);
        //同上,分配空间要给''留个空间
        char* szAnsi = new char[ansiLen + 1];
        //转换
        //unicode版对应的strlen是wcslen
        ::WideCharToMultiByte(CP_ACP, NULL, szUnicode, wcslen(szUnicode), szAnsi, ansiLen, NULL, NULL);
        //最后加上''
        szAnsi[ansiLen] = '';
        return szAnsi;
    }
    
    wchar_t* AnsiToUnicode(char* szAnsi)
    {
        // ansi to unicode
        //char* szAnsi = "abcd1234你我他";
        //预转换,得到所需空间的大小
        int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, 0);
        //分配空间要给''留个空间,MultiByteToWideChar不会给''空间
        wchar_t* wszString = new wchar_t[wcsLen + 1];
        //转换
        ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen);
        //最后加上''
        wszString[wcsLen] = '';
        return wszString;
    }
  • 相关阅读:
    结构体初始化所遇到的问题
    字符串赋值注意事项
    C语言可变参数 "..."
    typedef 定义指针数组和数组指针及其使用。
    指针函数、指针数组、函数指针、数组指针、函数指针数组。
    前端回血day24 flex子项伤的CSS属性
    Fiddler使用
    一句话“截流”和“防抖”
    django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.
    Linux
  • 原文地址:https://www.cnblogs.com/cjingzm/p/4021084.html
Copyright © 2011-2022 走看看