学习自
https://www.v2ex.com/amp/t/396556
https://stackoverflow.com/questions/46686649/c-get-the-user-preferred-encoding-or-locale-encoding/46690618#46690618
纯C++和Boost库,获得系统代码页,并转换UTF8字符串到系统字符集的字符串。
#include <boost/locale.hpp>
#include <string>
#include <iostream>
using namespace std;
string get_local_name()
{
string strCodePage = boost::locale::util::get_system_locale();
locale loc = boost::locale::generator().generate(strCodePage);
return use_facet<boost::locale::info>(loc).encoding();
}
int main()
{
string local_cp = get_local_name();
u8string s1 = u8"你好!";
string s2 = boost::locale::conv::between((char*)s1.c_str(), (char*)s1.c_str()+s1.size(), local_cp, "UTF8");
cout << s2 << endl;
return 0;
}