【问题标题】:What's C++ GUI Library support 32-bit character Unicode for Windows什么是 C++ GUI 库支持 Windows 的 32 位字符 Unicode
【发布时间】:2012-02-05 15:57:54
【问题描述】:

我的 Windows 应用程序使用 32 位字符 (Unicode) 作为亚洲语言。不知道有什么 C++ GUI 库支持。

编辑:我使用 UTF-8 作为 (char *)。

【问题讨论】:

  • 我整理了一下,注意到你用 utf-8 标记,但你的问题是关于 utf-32。你用的是哪个?
  • 所有的 GUI 工具包都支持 Unicode。
  • Windows 上的大多数 GUI 工具包都使用操作系统默认值 utf-16。您可以使用 MultiByteToWideChar() 从 utf-8 转换为 utf-16。或者通过设置语言环境使用 mbrtowc()。或者借助工具包提供的转换功能,他们不可避免地发明了自己的字符串类型(CString、QString、wxString、System::String、HString 等)。

标签: c++ windows user-interface unicode


【解决方案1】:

它实际上使用的是 UTF-32 吗?如果是这样,您将需要根据您的 GUI 库的需要将它们转换为 UTF-8 或 UTF-16。转换通常很容易,大多数支持 Unicode 的 GUI 都会有一些方法可以将其转换为字符串格式。

【讨论】:

  • 数据会丢失,因为汉字使用> 2个字节:-(
  • @dazzlingvit utf-8 和 utf-16 都是可变长度编码。
  • 字符使用超过 2 个字节。我使用 UTF-8 作为 (char *)
  • @dazzlingvit:是的,UTF-8 使用字节。但是每个字节都不是一个字符。每个字节都是一个UTF-8 code unit。多个代码单元组成一个Unicode codepoint。这就是 UTF-8 的全部意义:您可以在 char* 中编码所有 Unicode 代码点。 UTF-16 is the same way:如果一个代码点不适合 16 位值,那么它使用 2 个 16 位值对其进行编码。同样,UTF-16 的重点。也许您应该了解一下 UTF 的工作原理。
  • @dazzling 你对 Unicode 编码了解不够。我恭敬地建议您特别阅读有关 UTF-16 的内容。那是本机 Windows 编码,它支持完整的 Unicode 字符集。
【解决方案2】:

据我所知,Qt 支持 Unicode,例如

【讨论】:

    【解决方案3】:

    Qt 库支持 unicode,windows 窗体也是如此,可能还有很多其他的。 Qt 也对internationalization 有很多支持。

    顺便说一句,在 Windows c++ 上,宽字符存储为 utf-16,但由于 utf 是可变宽度,它们可以有效地存储任何字符。

    【讨论】:

      猜你喜欢
      • 2011-06-01
      • 2017-09-14
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 2013-05-28
      • 2016-11-04
      相关资源
      最近更新 更多