加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 通过TcpClient(byte [])发送包含特殊字符的字符串

发布时间:2020-12-15 08:23:49 所属栏目:百科 来源:网络整理
导读:我正在尝试通过TcpClient(byte [])发送包含特殊字符的字符串.这是一个例子: 客户在文本框中输入“amé” 客户端使用特定编码将字符串转换为byte [](我已经尝试了所有预定义的加上一些像“iso-8859-1”) 客户端通过TCP发送byte [] 服务器接收并输出使用相同
我正在尝试通过TcpClient(byte [])发送包含特殊字符的字符串.这是一个例子:

>客户在文本框中输入“amé”
>客户端使用特定编码将字符串转换为byte [](我已经尝试了所有预定义的加上一些像“iso-8859-1”)
>客户端通过TCP发送byte []
>服务器接收并输出使用相同编码重新转换的字符串(到列表框)

编辑:

我忘了提到结果字符串是“我?”.

编辑-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(“ééé”);奇迹般有效.

解决方法

我想回答一个问题永远不会太晚,希望有人能在这里找到答案.

C#使用16位字符,ASCII将它们截断为8位,以适合一个字节.经过一番研究,我发现UTF-8是特殊字符的最佳编码.

//data to send via TCP or any stream/file
byte[] string_to_send = UTF8Encoding.UTF8.GetBytes("amé");

//when receiving,pass the array in this to get the string back
string received_string = UTF8Encoding.UTF8.GetString(message_to_send);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读