如何将unicode编码数据转换为Devanagri(印地语)文本

时间:2011-07-14 08:10:52

标签: c# unicode utf-8 hindi

我正在通过手机将Devanagri(印地语)脚本中的短信收到我的桌面程序,但是它以编码方式显示数据(例如 - 091A09470924002009240924),我发现这是unicode。是否有现有的库可以将其转换为印地文文本?如果没有,我该如何为此编写方法?我正在使用C#。

3 个答案:

答案 0 :(得分:1)

使用System.Text.Encoding类。它有方法GetChars(byte [])。可能你需要一个合适的字体,因为一些印地语符号可以用多种方式编写。

答案 1 :(得分:1)

这是我用于将Georgian unicode转换为拉丁语等效文本的代码段。

string[] charset = new string[33] { "a", "b", "g", "d", "e", "v", "z", "T", "i", "k", "l", "m", "n", "o", "p", "J", "r", "s","t", "u", "f", "q", "R", "y", "S", "C", "c", "Z", "w", "W", "x", "j", "h" };
string unicodeString = "აბ, - გდ";
string latin_string = "";
byte[] unicodeBytes = Encoding.Unicode.GetBytes(unicodeString);
for (int p = 0; p < unicodeBytes.Length / 2; p++)
{
if (unicodeBytes[p * 2] > 207 && unicodeBytes[p * 2] < 241)
latin_string += charset[unicodeBytes[p * 2] - 208];
else
latin_string += Convert.ToChar(unicodeBytes[p * 2]).ToString();
}

仅解释必要部分:

Encoding.Unicode.GetBytes(unicodeString);返回字节数组,此数组的长度为2 * unicodeString.Length。这样来自unicodestring的每个字母都有一对字节。 为了更好的解释heres图像附加enter image description here

unicodeBytes偶数索引具有表示要解码的字母的值。格鲁吉亚字母的第一个字母从208开始,结束于240(总共33个)。因此,如果unicodeBytes值在[208; 240]的范围内,我必须使用charset字符串数组来获得拉丁语等价物,否则unicodeBytes值只是字符代码。

我不知道是否有一个库,但这个方法将为您提供如何编写自己的转换器的基本知识。

答案 2 :(得分:0)

感谢您的回复,他们帮助我找到了确切的解决方案 - http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/12a3558d-fe48-44fd-840e-03facfd9c944