使用Boost将代码页437从Unicode转换为Unicode

时间:2019-01-30 14:07:42

标签: c++ boost icu

如何使用boost::locale::conv::to_utf来将CP437字符串转换为unicode?

我有一个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失败?我需要使用其他代码页标识符进行增强吗?

0 个答案:

没有答案