TcpClient (byte[]) を介して特殊文字を含む文字列を送信しようとしています。次に例を示します。
- クライアントはテキストボックスに「アメ」と入力します
- クライアントは、特定のエンコーディングを使用して文字列を byte[] に変換します(定義済みのものと「iso-8859-1」のようなものをすべて試しました)
- クライアントは TCP 経由で byte[] を送信します
- サーバーは、同じエンコーディングで再変換された文字列を受け取り、出力します (リストボックスに)。
編集 :
結果の文字列が「am?」であることを忘れていました。
Edit-2 (リクエストに応じて、ここにいくつかのコードがあります):
@DJKRAZEここにちょっとしたコードがあります:
byte[] buffer = Encoding.ASCII.GetBytes("amé");
(TcpClient)server.Client.Send(buffer);
サーバー側:
byte[] buffer = new byte[1024];
Client.Recieve(buffer);
string message = Encoding.ASCII.GetString(buffer);
ListBox1.Items.Add(message);
リストボックスに表示される文字列は「am?」です。
=== 解決策 ===
Encoding encoding = Encoding.GetEncoding("iso-8859-1");
byte[] message = encoding.GetBytes("babé");
アップデート:
使用するだけで魔法Encoding.Utf8.GetBytes("ééé");
のように機能します。