zoukankan      html  css  js  c++  java
  • 多字节、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;
    }

    .

    .

    .

    备注

    .

    .关键点

    .

    相关链接

    相关链接    相关链接

    相关链接    相关链接.

    .




  • 相关阅读:
    PL/pgSQL的RETURN QUERY例子
    PL/pgSQL的 RETURN NEXT例子
    PL/pgSQL学习笔记之二
    基于React的PC网站前端架构分析
    DialogFragment创建默认dialog
    一个RecycleView的强大adapter
    企业者的福音之8266接入阿里智能,点亮一盏灯。
    基于webmagic的种子网站爬取
    自上而下渐显图片的CSS3实现
    用SwiftGen管理UIImage等的String-based接口
  • 原文地址:https://www.cnblogs.com/xe2011/p/3049003.html
Copyright © 2011-2022 走看看