zoukankan      html  css  js  c++  java
  • Windows下简单的编码转换

    Windows下简单的编码转换

    /**********************************************************************************
    * Function    : WCharToChar
    * Description : wide char to muliple char
    ***********************************************************************************/
    int WCharToChar(UINT PageCode, std::wstring strWChar, std::string &strChar)
    {
            int nSize = WideCharToMultiByte(PageCode, 0, strWChar.c_str(), -1, NULL, 0, NULL, NULL);
            if( nSize <= 0 )
                    return -1;

            strChar.clear();
            int ret = 0;
            char *pszDest = new char[nSize+1];
            if( pszDest )
            {
                    memset( pszDest, 0, nSize+1 );
                    ret = WideCharToMultiByte(PageCode, 0, strWChar.c_str(), -1, pszDest, nSize, NULL, FALSE);
                    pszDest[nSize] = '\0';
                    strChar = pszDest;
            }
            SAFE_DELETE_ARRAY( pszDest );
            return ret;
    }

    int WCharToChar(std::wstring strWChar, std::string &strChar)
    {
            return WCharToChar( GetOEMCP(), strWChar, strChar );
    }

    /**********************************************************************************
    * Function    : CharToWChar
    * Description : muliple char to wide char
    ***********************************************************************************/
    int CharToWChar(UINT PageCode, std::string strChar, std::wstring &strWChar)
    {
            int nSize = MultiByteToWideChar(CP_ACP, 0, strChar.c_str(), -1, 0, 0);
            if( nSize <= 0 )
                    return -1;

            strWChar.clear();
            int ret = 0;
            wchar_t *pszDest = new wchar_t[nSize+1];
            if( pszDest )
            {
                    memset( pszDest, 0, nSize );
                    ret = MultiByteToWideChar(PageCode, 0, strChar.c_str(), -1, pszDest, nSize);
                    pszDest[nSize] = L'\0';
                    strWChar = pszDest;
            }
            SAFE_DELETE_ARRAY( pszDest );
            return ret;
    }

    int CharToWChar(std::string strChar, std::wstring &strWChar)
    {
            return CharToWChar( GetOEMCP(), strChar, strWChar );
    }

    /**********************************************************************************
    * Function : GB2312ToUtf8
    * Description : GB2312 to UTF-8
    ***********************************************************************************/
    int GB2312ToUtf8A( const char *pszGB2312, std::string &strUtf8 )
    {
            int ret = 0;
            std::wstring wGB2312;
            CharToWChar( CP_ACP, pszGB2312, wGB2312 );
            ret = WCharToChar( CP_UTF8, wGB2312, strUtf8 );
            return ret;
    }

    int GB2312ToUtf8W( const wchar_t *pszGB2312, std::string &strUtf8 )
    {
            int ret = 0;
            ret = WCharToChar( CP_UTF8, pszGB2312, strUtf8 );
            return ret;
    }

    /**********************************************************************************
    * Function : Utf8ToGB2312
    * Description : UTF-8 to GB2312
    ***********************************************************************************/
    int Utf8ToGB2312A( const char *pszUtf8, std::string &strGB2312 )
    {
            int ret = 0;
            std::wstring wUnicode;
            CharToWChar( CP_UTF8, pszUtf8, wUnicode );
            ret = WCharToChar( CP_ACP, wUnicode, strGB2312 );
            return ret;
    }

    int Utf8ToGB2312W( const char *pszUtf8, std::wstring &strGB2312 )
    {
            int ret = 0;
            ret = CharToWChar( CP_UTF8, pszUtf8, strGB2312 );
            return ret;
    }
  • 相关阅读:
    codevs 3305 水果姐逛水果街Ⅱ&&codevs3006
    开发webrtc通过Js调用Go接口发送数据报错500(Internal Sever Error)排查分析
    TSINGSEE青犀视频开发单通道 Go WebRTC服务端拉流接口无响应导致程序堵塞,如何处理?
    H265网页视频播放器项目EasyPlayer.JS版本不支持PCM/711音频格式如何转换?
    网络穿透/视频拉转推服务系统EasyNTS通过gomod管理工具编译提示缺少依赖库解决方法
    WebRTC播放器通过js Video标签拉流播放有时无法刷新视频画面的原因排查
    开源框架WebRTC终极指南:3大 API 详解
    开源框架WebRTC 10年发展,现已成为官方Web标准
    IE8 下 iframe 滚动条的问题
    父窗口jquery触发iframe按钮事件(转载)
  • 原文地址:https://www.cnblogs.com/changping/p/2030821.html
Copyright © 2011-2022 走看看