プロが教えるわが家の防犯対策術!

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が発生します。
何か勘違いをしているのかもしれませんが,いまいちやり方が創造できません。
こちらも,ご存知の方がいらっしゃいましたら,ご教示願います。

A 回答 (2件)

フォームデザイナで,


Form1に対し,TextBox1とButton1を貼り付け,以下のコードを入力。
=============================
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim codePoint_string As String = TextBox1.Text
Dim codePoint As Integer = Integer.Parse(codePoint_string)
Me.Text = Char.ConvertFromUtf32(codePoint)
End Sub
End Class
'=========================
その後
http://homepage3.nifty.com/jgrammar/ja/tools/cod …
を利用して
文字「あ」がUTF-32で00003042=12354であることを確認後
TextBox1に12354を入力してButtonをクリックしたら
Form1に「あ」が表示された。・・・けどUTF-16だから違うんだよね?
http://msdn2.microsoft.com/en-us/library/wdh8k14 …
とか
http://msdn2.microsoft.com/en-us/library/z2ys180 …
とか使うのかもしれないけど良く解らん。
    • good
    • 0
この回答へのお礼

「あ~」と思わず叫んでしまいました。
そうですよね。
00003042=12354
ですよね。思い違いをしてました。FA11とか指定して,普通にInt.Parseしてました。
C#なので,
string codePoint_string = tb_output_unicode.Text;
int codePoint = Convert.ToInt16(codePoint_string, 16);
char c = (char)codePoint;
tb_input.Text = Convert.ToString(c);
で,文字を取り出せました。
本当にありがとうございます。上の回答とあわせて本当に感謝感激です。

お礼日時:2007/07/01 22:25

俺はVB.NET系のユーザだ。


ファイルやらビットやらは苦手で、殆ど検証していない。
なので勘だ。
(1)
System.Text.Encoding.Unicodeプロパティではなく
http://msdn2.microsoft.com/en-us/library/system. …
System.Text.Encoding.BigEndianUnicodeプロパティを使うとどうなるか教えて欲しい
http://msdn2.microsoft.com/en-us/library/system. …
    • good
    • 0
この回答へのお礼

早速のアドバイスありがとうございます。
Encoding.BigEndianUnicode
で,満足できました。
見落としてました。本当に助かりました。

お礼日時:2007/07/01 22:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!