字符串编码转换(UTF-8,ANSI 互转)
[編輯] [转简体] (简体译文)
|
作者:huidong
| 分類:【編程】編碼
[
24 瀏覽
0 評論
6 贊
5 踩
]
概要
正文
///////////////////////////// // // 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,就可能会崩溃。