【问题标题】:mbstowcs() failing for special charactermbstowcs() 因特殊字符而失败
【发布时间】:2011-03-23 11:50:28
【问题描述】:

我正在使用由 windows 生成的 xml。它包含版权字符。我必须获取这个文件并在我的 c++ linux 应用程序中解析它。我必须使用 mbstowcs 函数,但该函数无法解析看起来像:\302\256 的版权 (R) 字符。

有什么建议吗?

10 倍!

【问题讨论】:

  • 你打电话给setlocale()吗?有什么论据?您的LANG 环境变量设置为什么?
  • 你必须设置一个适合xml文件编码的语言环境

标签: c++ linux unicode


【解决方案1】:

文件的编码是什么?它是写成多字节字符串还是 UTF-8? UTF-8 不一定与多字节字符串相同,因此您可能必须自己进行转换,除非您能够读取 UTF-8(C++ 流有点棘手)。我正在使用开源解决方案 (UTF8-CPP) 进行转换,它在 Linux 和 Windows 上运行良好。它允许您使用 std::string 和 std::wstring 进行所有转换(宽字符串到 utf-8,反之亦然)。

【讨论】:

  • 0302 0256(R) 字符(八进制)的 UTF-8 编码,所以 UTF-8 似乎是 OP 所拥有的。
猜你喜欢
  • 2014-04-06
  • 2020-02-17
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
相关资源
最近更新 更多