当前位置:  开发笔记 > 编程语言 > 正文

C#和UTF-16字符

如何解决《C#和UTF-16字符》经验,为你挑选了1个好方法。

在C#中是否可以使用不在Plane 0中的UTF-32字符作为char?

string s = ""; // valid
char c = ''; // generates a compiler error ("Too many characters in character literal")

在s中它由两个字符表示,而不是一个.

编辑:我的意思是,是否有一个字符AN字符串类型,每个字符支持完整的unicode,UTF-32或UTF-8?例如,如果我想在字符串中的utf-32(可能不在plane0中)字符上进行for循环.



1> Emperor XLII..:

string类表示文本的UTF-16编码的块,并且每个charstring表示UTF-16码值.

虽然没有代表单个Unicode代码点的BCL类型,但是以方法重载的形式支持超出平面0的Unicode字符,它采用a string和索引而不是a char.例如,System.Globalization.CharUnicodeInfo类GetUnicodeCategory(char)上的静态方法具有相应的方法,该方法将识别从指定索引开始的简单字符或代理项对.GetUnicodeCategory(string,int)


要遍历a中的文本元素string,可以使用System.Globalization.StringInfo类中的方法.这里,"文本元素"对应于屏幕上显示的单个字符.这意味着简单的字符("a"),组合字符("a\u0304\u0308"="ā̈")和代理对("\uD950\uDF21"=" ")都将被视为单个文本元素.

具体来说,GetTextElementEnumerator静态方法将允许您枚举a中的每个文本元素string(请参阅链接的MSDN页面以获取代码示例).

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有