也许我不需要32位字符串,但我需要代表32位字符
http://www.fileformat.info/info/unicode/char/1f4a9/index.htm 现在我抓住了symbola字体,当我粘贴它时(在网址或任何文本区域)可以看到字符,所以我知道我有字体支持。
但我如何在我的C#/ .NET应用程序中支持它?
-edit-我会添加一些东西。当我在.NET winform应用程序中粘贴所述字符时,我没有正确地看到该字符。当它粘贴到Firefox中时,我确实看到了它。如何在winform应用程序中正确查看字符?
答案 0 :(得分:7)
我不确定我理解你的问题:
String
是UTF-16编码的,你无能为力。如果要获取字符串的UTF-32版本,则必须将其转换为具有UTF32Encoding类的字节数组。Char
行为是16位长,而且你也无法做到这一点。 UTF-32编码字符只能由字节数组(包含4个项目)表示。您可以使用UTF32Encoding类来实现此目的。答案 1 :(得分:3)
你没有说“支持”究竟是什么意思。但是,除非你进行字符串操作,否则你需要做的就是使用不适合一个16位char
的字符。它们只会被代表为代理对,但如果您将string
视为一个整体,则不应该知道这一点。
一个例外是某些字符串操作方法无法正常工作。例如"\U0001F4A9".Substring(1)
将返回代理对的后半部分,这不是有效的字符串。