• 多字节、Unicode和UTF8字符串的互换


    .

     

    实现过程

    .

     

    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    #include <string>
    using namespace std;
    string Unicode2Ascii(wstring wstrsrc);
    wstring Ascii2Unicode(string astrsrc);
    string Unicode2UTF8(wstring wstrsrc);
    wstring UTF82Unicode(string utf8strsrc);
    int main(int argc, char* argv[])
    {
        char szText[] = "这是一个ANSI转化为UTF8的例子!\r\n";
        wstring strUnicode;
        string strAnsistrUTF8;
        strAnsi = szText;
        strUnicode = Ascii2Unicode(strAnsi);
        strUTF8 = Unicode2UTF8(strUnicode);
        cout << strUTF8 << endl;
        
        strUnicode = UTF82Unicode(strUTF8);
        strAnsi = Unicode2Ascii(strUnicode);
        cout << strAnsi << endl;
        return 0;
    }
    string Unicode2Ascii(wstring wstrsrc)
    {
        int nLength = ::WideCharToMultiByte(CP_OEMCP0wstrsrc.c_str(), -1NULL0NULLNULL);
        if(nLength <= 0) return string("");
        char *szbuffer = new char[nLength + 2];
        ::WideCharToMultiByte(CP_OEMCP0wstrsrc.c_str(), -1szbuffernLengthNULLNULL);
        string strnew = szbuffer;
        delete [] szbuffer;
        return strnew;
    }
    wstring Ascii2Unicode(string astrsrc)
    {
        int nLength = ::MultiByteToWideChar(CP_ACP0astrsrc.c_str(), -1NULL0);
        if(nLength <= 0) return wstring(L"");
        wchar_t *szbuffer = new wchar_t[nLength + 2];
        ::MultiByteToWideChar(CP_ACP0astrsrc.c_str(), -1szbuffernLength);
        wstring strnew = szbuffer;
        delete [] szbuffer;
        return strnew;
    }
    string Unicode2UTF8(wstring wstrsrc)
    {
        int nLength = ::WideCharToMultiByte(CP_UTF80wstrsrc.c_str(), -1NULL0NULLNULL);
        if(nLength <= 0) return string("");
        char *szbuffer = new char[nLength + 2];
        ::WideCharToMultiByte(CP_UTF80wstrsrc.c_str(), -1szbuffernLengthNULLNULL);
        string strnew = szbuffer;
        delete [] szbuffer;
        return strnew;
    }
    wstring UTF82Unicode(string utf8strsrc)
    {
        int nLength = ::MultiByteToWideChar(CP_UTF80utf8strsrc.c_str(), -1NULL0);
        if(nLength <= 0) return wstring(L"");
        wchar_t *szbuffer = new wchar_t[nLength + 2];
        ::MultiByteToWideChar(CP_UTF80utf8strsrc.c_str(), -1szbuffernLength);
        wstring strnew = szbuffer;
        delete [] szbuffer;
        return strnew;
    }

    .

    .

    .

    备注

    .

    .关键点

    .

    相关链接

    相关链接    相关链接

    相关链接    相关链接.

    .




  • 相关阅读:
    js中return;、return true、return false;区别
    JS跨域设置和取Cookie
    检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)
    IIS7中Ajax.AjaxMethod无效的原因及解决方法
    ajax 跨域的问题 用js绕过跨域
    微服务笔记
    smali语法笔记
    Go Micro 入门笔记
    介绍微服务框架Micro笔记
    JS任务队列--笔记
  • 原文地址:https://www.cnblogs.com/xe2011/p/3049003.html
Copyright © 2020-2023  润新知