c# – 将字符串转换为其代码点
我必须将大量字符转换为它们的Unicode Code Point等价物.我使用以下代码进行此转换:
string sample = "b"; int utf32 = char.ConvertToUtf32(sample,0); string codePoint = string.Format("{0:X}",utf32); 这适用于更普通的字符,但是我有这样的字符ǎ,其中实际的字符串包括2个字符a(U-0061)和’?'(U-030C).函数ConverToUtf32(string,int)只返回我实际期待U-0103的第一个(或另一个取决于索引)字符.使用ConvertToUtf32(char,char)不起作用,因为它需要更高代码点的字符. 我可以使用另一个函数将字符串转换为代码点,还是可以执行的计算? 解决方法
这似乎不是你真正要求的.如果您有来自Basic Multilingual Plane(BMP)的字符,则每个字符对应于一个代码点.转换为UTF-32不会改变任何相关内容. ConvertToUtf32()方法,尤其是带有两个字符的重载,用于处理非BMP的代码点.但这似乎并不是你所需要的. 你实际上要求的是将normalize字符串改为“规范化形式Canonical Composition”(NFC).为此,请使用the string decomposed = "x0061x030C"; string composed = decomposed.Normalize(NormalizationForm.FormC); foreach (char c in composed) Console.WriteLine("U+{0:X4}",(int)c); 这将打印“U 01CE”,即LATIN SMALL LETTER A WITH CARON,这似乎是你想要的. (U 030C是COMBINING CARON,所以结果是U 01CE LATIN SMALL LETTER A WITH CARON.如果你真的想要U 0103 LATIN SMALL LETTER A WITH BREVE,你需要使用U 0306 COMBINING BREVE.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 【JavaWeb-3】XML的解析与XPath的使用
- ruby-on-rails – 在ruby中使用class_eval时,如何访问原始类
- Flash Player 11 & AIR 3.0 新特性
- c – 如何使用操纵器将填充的左零位格式化为十六进制输出
- ruby-on-rails – 有什么区别b / w minitest-rails和minite
- 最高效的XML解析方式-----Simple 简化 XML 解析
- Cocos2dx 3.2 maybe you meant: _OBJC_CLASS_$_GCControlle
- 使用at91sam9260在uboot下直接对nandflash操作
- 用Ruby正则表达式中的值替换所有匹配项
- cocos2d-x 3.3 按钮添加和事件(CCControlButton)