c++ - 以不依赖于平台的方式将字符集从 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 或其他库中是否有任何可用的解决方案,可以执行此类转换?是否可以将诸如字符集之类的区域设置“链接”到应用程序,以便它可以独立于系统区域设置工作?
解决方案
您可能想看看具有字符转换功能的 Unicode 国际组件 (ICU) 。
推荐阅读
- python - 通过 Crontab 运行 Python 脚本,但 SQL 数据库未更新
- html - 网站滚动条变小时不可见
- python - 从终端返回输出
- python-3.x - 当我有 IOError 时,Python While 循环停止
- node.js - 如何在不出现用户名密码提示的情况下从 windows auth 获取 LOGON_USER 信息?
- android - 即使我找到了 shape_diagonal_direction
- android - 应用程序未显示在 Android 共享对话框中的文本
- cordova - 类星体模式添加科尔多瓦什么都不做
- android-studio - 无法解决:com.google.android.gms:play-services-clearcut:12.0.1
- ios - UITableView 的每个 UITableViewCell 中的 UISegmentedControl