如何使用boost::locale::conv::to_utf
来将CP437字符串转换为unicode? p>
我有一个std::string
,其中包含CP437编码的字符串“äöü”。对应的UTF16编码为0x00e4、0x00f6、0x00fc。我都尝试过
std::wstring str_utf = boost::locale::conv::to_utf<wchar_t>(str_437, "CP437");
和
boost::locale::generator gen;
std::locale loc = gen.generate("CP437");
std::wstring str_utf = boost::locale::conv::to_utf<wchar_t>(str_437, loc);
将字符串转换为unicode字符串,但是没有用:第一个方法返回了错误的wchar_t
值0x0004、0x0014、0x0001,第二个方法失败了,并返回了abort() has been called
。
我还尝试了“ CP437”字符串的变体,例如“ .CP437”,“ cp437”,“。cp437”等,但是它们都不起作用。
我首先以为也许我的字符串根本没有在CP437中编码,但是后来我使用ICU库转换了字符串,并成功产生了正确的UTF16值0x00e4、0x00f6、0x00fc。
为什么在ICU成功处理相同字符串时,boost失败?我需要使用其他代码页标识符进行增强吗?