【问题标题】:How to use Unicode (UTF-8) in C++ [duplicate]如何在 C++ 中使用 Unicode (UTF-8) [重复]
【发布时间】:2010-06-07 20:57:42
【问题描述】:

可能重复:
Unicode in C++

如果我没记错的话,C++ 中的默认字符和字符串编码是 ASCII。有没有一种简单的方法来启用 Unicode 支持?

【问题讨论】:

  • @Troubadour:如何在评论中创建链接?
  • 好吧,简单地复制粘贴一个 URL 将把它转换成一个链接(虽然没有给你机会有一个漂亮的标题)。至于后一个链接:只需投票关闭重复将自动创建评论:)
  • @afriza:与答案中的方式相同。单击答案编辑字段上方的问题图标以获取有关如何创建链接的帮助。在这种情况下,正如@Matthieu M 所说,我在顶部的评论实际上是由 SO 自动生成的。

标签: c++ unicode


【解决方案1】:

【讨论】:

  • 我遇到过的关于 Unicode 的最简单的解释。谢谢。
  • 这是对什么是 Unicode 和 UTF-8 的一个很好的解释,但我该如何在 C++ 中实际使用它呢?有没有办法,或者我是否坚持使用字节字符串并自己处理编码?
【解决方案2】:

当前的 C++ 没有以任何方式指定编码。您可能会查看一个实际的 Unicode 库,例如 ICU,或者在一些架构和实现中,您可以使用 wchar_t 来操作和保存 Unicode 字符串。

编辑:这个答案是指 C++03。如前所述,它不再适用。

【讨论】:

【解决方案3】:

这取决于您想对正在处理的文本做什么。 UTF-8 的一半是如果现有代码处理 8 位字符并且对 128 以上的字符没有任何特殊处理,则无需更改现有代码。当然, strlen 是以字节为单位的长度,而不是字符或代码-点数。因此,您可能有一个可以直接使用 UTF-8 的文本输入、文本输出程序。或者您正在创建文本 GUI,因此需要处理 ruby​​ 和 RTL 文本,在这种情况下,您的工作要复杂得多,您可能需要选择合适的库。

【讨论】:

    【解决方案4】:

    取决于您使用的 C++ 版本。 C++0x(尚未完全发布,但仍受许多编译器支持)为该语言添加了原生 UTF-8 支持。否则,该语言不支持 UTF-8。 C++03 及更早版本通过使用宽字符 (wchar_t) 支持 unicode。

    【讨论】:

    • 现在是 2017 年,C++ 从未添加 UTF8 支持。它以 char16_t、u16string、char32_t 和 u32string 的形式添加了 UTF16 和 UTF32。 UTF8 数据仍被视为 char/string
    【解决方案5】:

    如果您使用的是 Visual Studio,那么进入项目属性并将预处理器定义为 _UNICODE 即可为您完成这项工作。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 2020-09-10
      • 2012-07-21
      • 2017-04-23
      • 2011-04-18
      • 2018-05-17
      • 2020-09-30
      • 2023-03-29
      相关资源
      最近更新 更多