3

也许我不需要 32 位字符串,但我需要表示 32 位字符

http://www.fileformat.info/info/unicode/char/1f4a9/index.htm 现在我抓住了符号字体,当我粘贴它时可以看到字符(在 url 或任何文本区域中)所以我知道我有它的字体支持。

但是我如何在我的 C#/.NET 应用程序中支持它?

-编辑-我会添加一些东西。当我将上述字符粘贴到我的 .NET winform 应用程序中时,我没有正确看到该字符。将其粘贴到 Firefox 中时,我确实正确地看到了它。如何在我的 winform 应用程序中正确查看字符?

4

2 回答 2

9

我不确定我是否理解您的问题:

  • String.NET 中的 s 是 UTF-16 编码的,对此您无能为力。如果您想获取字符串的 UTF-32 版本,则必须使用UTF32Encoding类将其转换为字节数组。
  • Char因此,.NET 中的 actor 有 16 位长,对此您也无能为力。一个 UTF-32 编码的字符只能用一个字节数组(有 4 个项目)来表示。为此,您可以使用UTF32Encoding类。
  • 每个 UTF-32 字符都有一个等效的 UTF-16 表示,反之亦然。因此,在这种情况下,我们只能谈论字符及其不同的表示(编码),UTF-16 是 .NET 平台上的首选表示。
于 2011-07-23T15:55:20.107 回答
3

你没有说“支持”到底是什么意思。但是你不需要做任何特别的事情来处理不适合一个 16-bit 的char字符,除非你进行字符串操作。string它们将仅表示为代理对,但如果您将其视为一个整体,则不需要知道这一点。

一个例外是某些字符串操作方法无法正常工作。例如"\U0001F4A9".Substring(1)将返回代理对的后半部分,它不是一个有效的字符串。

于 2011-07-23T15:55:57.400 回答