「C#」文字コードの取得&文字変換
C#で文字コードを調べるプログラムを作成しています。
そこで2つ質問をさせてください。
1つ目(文字コード調べ)
TextBoxに漢字を入力して,各エンコーディングの文字コードを調べるときに,UNICDEの場合,
Encoding enc_default = Encoding.GetEncoding(932);
string input = tb_input.Text;
byte[] byte_input = enc_default.GetBytes(input);
string outtext_unicode = "";
Encoding enc_unicode = Encoding.Unicode;
byte[] byte_unicode = Encoding.Convert(enc_default,enc_unicode, byte_input);
foreach (byte b in byte_unicode)
{
outtext_unicode += string.Format("{0:X}", (int)b);
}
tb_output_unicode.Text = outtext_unicode;
とすると,調べたい文字コードがLE(リトルエディアン)で出力されます。これをBE(ビッグエディアン)で出力されるにはどうしたらよいでしょうか?
ご存知の方がいらっしゃいましたら,ぜひ教えてください。
よろしくお願いいたします。
2つ目(文字コードから文字を取得する)
上記の質問と逆のパターンで,TextBoxに文字コードを入力してもらい,人間が読める文字に変換する場合下記のようなコードを書くと,
string codePoint_string = tb_output_unicode.Text;
int codePoint = int.Parse(codePoint_string);
char c = (char)codePoint;
tb_input.Text = Convert.ToString(c);
ASCIIの文字コードを入力した場合には,きちんと変換してくれるのですが,漢字の文字コードを入力すると,FormatExceptionが発生します。
何か勘違いをしているのかもしれませんが,いまいちやり方が創造できません。
こちらも,ご存知の方がいらっしゃいましたら,ご教示願います。
お礼
ありがとうございます。 Me.TextBox1.Text = CHRW(&H82B1) & CHRW(&HDB40) & CHRW(&DD00) だと 下記のエラーとなりました。 式が必要です。 'DD00' は宣言されていません。アクセスできない保護レベルになっています。 エラー箇所を修正すると Me.TextBox1.Text = CHRW(&H82B1) & CHRW(&HDB40) & CHRW(&HDD00) 普通の花が出ました。 一旦、前半部分だけにしてみると Me.TextBox1.Text = CHRW(&H82B1) やはり普通の花が出ました。 ここで初めて http://itpro.nikkeibp.co.jp/article/COLUMN/20100126/343783/ を読んでみました。 U+845BとU+E0101の場合、 UTF-16であれば「845B DB40 DD01」 UTF-8であれば「E8 91 9B F3 A0 84 81」 うーん、サッパリ分からない。 UTF-8の方が馴染みがあるが、コードの中身は全く分からない。 UTF-16の方は、845Bの前半部分が同じなので、IVSコードから見たら、規則性が、まだ分かりそう。 U+845Bが「845B」なら、 U+E0101は「DB40 DD01」か? いくつかのサンプルを見ると、 U+E01は「DB40 DD」? 単純に右の2けた以外は考えなくて良さそう。 考えが正しいかどうか分からない。 ただ、IVSフォントのところに、++の花が出る事が確認できた。 Me.TextBox1.Font = New Font("IPAmj明朝", 48) Me.TextBox1.Text = ChrW(&H82B1) & ChrW(&HDB40) & ChrW(&HDD03)