匯東網


字符串编码转换(UTF-8,ANSI 互转)

[編輯] [转简体]
|
作者:huidong | 分類:【編程】編碼
[ 11 瀏覽 0 評論 0 贊 1 踩 ]

概要

正文

/////////////////////////////
//
//    EncodingConvert.hpp
//    字符串编码转换
//

#pragma once

#include <codecvt>

namespace EncodingConvert {

    // 转为 UTF-8
    std::string ToUTF8(const std::wstring& str)
    {
        static std::wstring_convert<std::codecvt_utf8<wchar_t> > strCnv;
        return strCnv.to_bytes(str);
    }

    // 转为 ANSI
    std::wstring ToANSI(const std::string& str)
    {
        static std::wstring_convert< std::codecvt_utf8<wchar_t> > strCnv;
        return strCnv.from_bytes(str);
    }

    // 任意编码转换
    // locale = "chs" 或 "zh-cn"
    std::string ToEncoding(const std::wstring& str, const std::string& locale)
    {
        typedef std::codecvt_byname<wchar_t, char, std::mbstate_t> F;
        static std::wstring_convert<F> strCnv(new F(locale));
        return strCnv.to_bytes(str);
    }

    // 任意编码转换
    // locale = "chs" 或 "zh-cn"
    std::wstring ToEncoding(const std::string& str, const std::string& locale)
    {
        typedef std::codecvt_byname<wchar_t, char, std::mbstate_t> F;
        static std::wstring_convert<F> strCnv(new F(locale));
        return strCnv.from_bytes(str);
    }

}


改编自 https://blog.csdn.net/dbx2011/article/details/99735254


注意!如果错误地进行转换可能导致崩溃,比如原本就是 ANSI 编码的字符串转 ANSI,就可能会崩溃。


[ 0] [ 1]


 評論區  0 條評論

+ 添加評論