2011-07-14 6 views
3

Devanagri(ヒンディー語)スクリプトで自分の携帯電話からデスクトッププログラムにSMSメッセージを受信して​​いますが、エンコーディングでデータを表示しています(例:091A09470924002009240924 )私が知ったのはユニコードです。これをヒンディー語のテキストに変換するための既存のライブラリはありますか?そうでない場合は、どうすればこの方法を書くことができますか?私はC#を使用しています。ユニバース符号化データをDevanagri(ヒンディー語)テキストに変換する方法

+0

ちょうどあなたの「ユニコードれる」あなたは2バイトで表現Unicodeのコードポイントを見ているにメモを追加します。私。あなたのキャラクターは091A 0947 0924 0020 0924 0924です。適切なDevangariコードページはhttp://www.unicode.org/charts/PDF/U0900.pdfで見ることができます。 – borrible

答えて

1

System.Text.Encodingクラスを使用します。メソッドGetChars(byte [])を持ちます。いくつかのヒンディー語のシンボルはいくつかの方法で記述できるので、おそらく適切なフォントが必要になるでしょう。

1

ここでは、Georgianユニコードをラテン語の同等のテキストに変換するために使用したコードスニペットを示します。必要な部分のみ説明

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あります。ユニコードストリングからのすべての文字が1対のバイトを持つようにします。 よりよい説明のためのheres画像enter image description here

unicodeBytesデコードしたい文字を表すインデックスさえもインデックスに値があります。グルジアのアルファベットの最初の文字は240で終わる208で始まりました(合計33)。だからunicodeBytesの値が[208; 240]の範囲にある場合は、charset文字列配列を使用してラテン語の同等の文字列を取得する必要がありました。そうでない場合は、unicodeBytesの値は単なるcharコードでした。

ライブラリがあるかどうかわかりませんが、この方法では独自のコンバータの書き方を基本的に理解できます。応答のための

関連する問題