【发布时间】:2013-02-11 12:01:01
【问题描述】:
我正在尝试通过 TcpClient (byte[]) 发送包含特殊字符的字符串。这是一个例子:
- 客户在文本框中输入“amé”
- 客户端使用某种编码将字符串转换为字节[](我已经尝试了所有预定义的以及像“iso-8859-1”这样的一些)
- 客户端通过 TCP 发送字节[]
- 服务器接收并输出使用相同编码重新转换的字符串(到列表框)
编辑:
我忘了说结果字符串是“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("ééé"); 就像一个魅力。
【问题讨论】:
-
Philippe 你有现有的代码吗?为什么人们在这里在线提问并期望我们知道他们在说什么..?我们看不到您在做什么,也不知道您的代码是什么样的。所以发布您正在使用的内容...
-
@DJKRAZE 这里有一段代码: byte[] buffer = Encoding.ASCII.GetBytes("amé"); (TcpClient)server.Client.Send(buffer);在服务器端: byte[] buffer = new byte[1024]; Client.Recieve(缓冲区);字符串消息 = Encoding.ASCII.GetString(buffer); ListBox1.Items.Add(消息);出现在列表框中的字符串是“am?”
-
ASCII 在这里不行——它不支持重音字符。请改用 UTF-8。
-
@500-InternalServerError 尝试了所有预定义的,包括 utf-8.. :S
-
如果去掉中间人(套接字连接),它是否适用于 UTF-8?
标签: c# .net encoding tcp special-characters