gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:31:34 24 4
gpt4 key购买 nike

我正在尝试通过 TcpClient (byte[]) 发送包含特殊字符的字符串。这是一个例子:

  • 客户在文本框中输入“amé”
  • 客户端使用特定编码将字符串转换为 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("ééé"); 就像一个魅力。

最佳答案

回答我认为的问题永远不会太晚,希望有人能在这里找到答案。

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);

关于c# - 通过 TcpClient (byte[]) 发送包含特殊字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15082285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com