UTF-8到带有STL的本地多字节
UTF-8 to local multibyte with STL
我需要使用多平台(Linux、Windows)方法将UTF-8字符串转换为本地多字节编码(cp1251)。然而,除了首先将UTF-8转换(使用std::codecvt
和std::locale
)为宽字符串,然后将宽字符串转换为本地字符串外,我找不到一种在两个平台上都能工作的标准方法(最好是STL)。有没有一种方法可以通过一次转换来做到这一点?
标准库不包含任何可以执行此操作的内容。至少不是直接实现的,而且您需要的组件之一还没有在任何C++实现中实现:您将使用能够在UTF-8和UTF-16或UTF-32之间转换的codecvt方面,然后使用<cuchar>
标头中的函数将UTF-16或UTF-32转换为区域设置多字节编码。
由于该选项不可用,您的最佳选择是使用可移植库,或者使用各种特定于平台的API自己实现转换,并使用可以跨平台使用的通用API包装这些转换。您可以在posix平台上使用libiconv,在Windows上使用MultiByteToWideChar和WideCharToMultiByte。
相关文章:
- 多字节到宽字符无法正常工作
- 如果使用多字节字符集,为什么TCHAR值会更改
- 在多个 STL 对对象上创建迭代器
- 多字节字符'377777'如何工作?
- 找到最长的UTF-8序列,而无需打破多字节序列
- 如何在MFC多字节应用程序中显示西里尔文本?
- 将多个 stl 文件合并为一个
- 从多字节字符集转换旧的Visual Studio C++项目
- 了解多字节/Unicode
- 在 linux/mac 中获取多字节字符的"char"
- 以C++输出多字节字符串
- C++中数组中的多字节UTF-8
- 操作多字节字符的字符串
- Visual Studio 多字节字符到单个字节
- 如何封送多字节字符集 C#
- 多字节到宽字符将 (°) 度数符号转换为
- 在类中创建多维STL向量
- setw() 在包含 UTF-8 多字节字符/码位的字符串上输入错误的输出
- 协助在 MFC 中从多字节移植到 UNICODE
- UTF-8到带有STL的本地多字节