3

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

4

3 に答える 3

1

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

于 2011-07-14T08:19:03.943 に答える
1

以下は、グルジア語の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 からのすべての文字がバイトのペアを持つようにします。より良い説明のために、ここに画像が添付されていますここに画像の説明を入力

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

そのためのライブラリがあるかどうかはわかりませんが、この方法は、独自のコンバーターを作成する方法の基本的なアイデアを提供します。

于 2011-07-14T09:15:53.030 に答える
0

回答ありがとうございます。正確な解決策を見つけるのに役立ちました - http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/12a3558d-fe48-44fd-840e-03facfd9c944

于 2011-07-14T18:38:41.550 に答える