在C#中的Unicode字符串转换为Unicode字符的印度语言(Converting Unicod

2019-08-04 09:15发布

我需要unicode字符串转换为Unicode字符。

对于如:语言泰米尔语

“卡迈利'=>' B '' H '' L'

我能够剥离的unicode字节,但生产Unicode字符是成了问题。

byte[] stringBytes = Encoding.Unicode.GetBytes("கமலி");
char[] stringChars = Encoding.Unicode.GetChars(stringBytes);
foreach (var crt in stringChars)
 {
     Trace.WriteLine(crt);
 }

它给结果为:

'Q'=> 0 x0b95

'H'=> 0 x0bae

'L'=> 0 x0bb2

'ி'=> 0 x0bbf

所以这里的问题是如何剥离字符“லி”,因为它为不喜欢拆分“லி“ல”,“ி”。

因为它是由代表辅音和元音作为单个字符,但与C#解析在印第安语中自然使困难。

所有我需要被分成3个字符。

Answer 1:

遍历字形可以使用的方法StringInfo类。

基本字符+组合字符的每个组合被称为由.NET文档一个“文字元素”,你可以使用超过他们迭代TextElementEnumerator

var str = "கமலி";
var enumerator = System.Globalization.StringInfo.GetTextElementEnumerator(str);
while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Current);
}

输出:

க
ம
லி


文章来源: Converting Unicode string to unicode chars in c# for indian languages