在c#中将Unicode字符串转换为unicode字符用于印度语言

时间:2012-12-20 06:27:33

标签: c# .net unicode .net-2.0 tamil

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

例如:语言泰米尔语

“கமலி”=> 'க', 'ம', 'லி'

我能够剥离unicode字节但是生成unicode字符就成了问题。

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

它将结果表示为:

'க'=> 0x0b95

'ம'=> 0x0bae

'ல'=> 0x0bb2

'ி'=> 0x0bbf

所以这里的问题是如何将字符'லி'剥离为'லி'而不分裂 'ல', 'ி'。

因为通过将辅音和元音表示为单个字符而使用c#进行解析使得印度语很自然。

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

1 个答案:

答案 0 :(得分:12)

要迭代字形,您可以使用StringInfo类的方法。

基本字符+组合字符的每个组合在.NET文档中称为“文本元素”,您可以使用TextElementEnumerator迭代它们:

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

输出:

க
ம
லி