我已经设法忽略所有这些多字节字符的东西,但现在我需要做一些 UI 工作,我知道我在这方面的无知将会赶上我!谁能用几段或更少的内容解释我需要知道的内容,以便我可以本地化我的应用程序?我应该使用什么类型(我同时使用 .Net 和 C/C++,并且我需要针对 Unix 和 Windows 的答案)。

其他提示

字符编码由一系列代码组成,每个代码都从给定的字符集中查找符号。请参阅这篇好文章 维基百科关于字符编码.

UTF8 (UCS) 每个符号使用 1 到 4 个字节。 维基百科 给出了多字节概要如何工作的一个很好的概要:

  • 单字节字符的最高有效位始终为 0。
  • 多字节序列的第一个字节的最显着位决定了序列的长度。这些最重要的位是两个字节序列的110;1110用于三字节序列,依此类推。
  • 多字节序列中的其余字节具有10个最重要的位置。
  • UTF-8 流既不包含字节 FE 也不包含 FF。这确保UTF-8流从U+FEFF开始(字节订单标记)从未像UTF-16流一样

该页面还向您展示了每种字符编码类型的优缺点之间的详细比较。

UTF16 (UCS2)

每个符号使用 2 到 4 个字节。

UTF32 (UCS4)

每个符号始终使用 4 个字节。

字符 只是表示一个字节的数据,而不是实际的编码。它与 UTF8/UTF16/ascii 不同。char* 指针可以引用任何类型的数据和任何编码。

标准格式:

STL的STD :: WSTRING和STD :: String均未针对诸如UTF-8和UTF-16之类的可变长度编码设计。

如何实施:

看一下 iconv 库。 图标 是一个强大的字符编码转换库,被诸如 库文件 (Gnome 的 XML C 解析器)

有关字符编码的其他重要资源:

收到的智慧表明Spolsky的文章未命中几点重要。

建议本文更完整: Unicode®标准:技术介绍

本文也是一个很好的介绍: Unicode基础知识

后者特别概述了Unicode的字符编码形式和方案。

各种UTF标准是编码“代码点”的方式。代码点是Unicode字符集的索引。

另一种编码是UCS2,它总是16位,因此不支持完整的Unicode范围。

很高兴知道一个代码点不等于一个字符。例如,诸如å可以表示为代码点,也可以表示为一个用于a的一个代码点和一个用于环的代码点。

比较两个unicode字符串因此需要规范化以在比较之前获得规范表示。

字体也存在问题。处理字体有两种方法。您可以使用带有字形的巨大字体来表示您需要的所有Unicode字符(我认为最新版本的Windows带有一两个这样的字体)。或者您使用som库,它能够组合专用于Unicode标准子集的各种字体的字形。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top