首页 > 解决方案 > 以不依赖于平台的方式将字符集从 Unicode 转换为 ISO8859-x 代码页

问题描述

我需要将 UTF-8 编码的传入字符串转换为特定于国家/地区的代码页 - 例如 ISO-8859-2 (ISO Latin-2)。

重要的是,我想独立于系统上存在的适当语言环境。这种转换的目标不是国际化,因为我的程序应该在多语言用户的机器上具有适当的输出。转换必须为需要预定义编码的外部设备创建数据。

到目前为止,我刚刚创建了一个映射,它定义了从 Unicode 代码点到 ISO-8859-2 等效项的转换。我使用std::wstring_convert<std::codecvt_utf8<wchar_t>>将 UTF-8std::string转换为 Unicode std::wstring,然后使用定义的映射进行转换。当然,我想还有更好的方法。

标准 C++ 库、Boost 或其他库中是否有任何可用的解决方案,可以执行此类转换?是否可以将诸如字符集之类的区域设置“链接”到应用程序,以便它可以独立于系统区域设置工作?

标签: c++unicodecharacter-encodingnon-ascii-characterscodepages

解决方案


您可能想看看具有字符转换功能的 Unicode 国际组件 (ICU) 。


推荐阅读