【发布时间】:2021-12-06 03:29:44
【问题描述】:
我在将字节数组转换为正确格式的字符串时遇到问题。我通过 TCP 套接字读取字节数组,它给了我字节,其中一个字节是 byte 158。 如果我读取字符串:
Encoding.Latin1.GetString(data)
它给了我格式的字符串 “blahblah\u009eblahblah”。 \u009e 是字母ž的代码。 我需要的刺痛应该是 “废话ž废话”。 我怎样才能得到正确格式的字符串?
我已经尝试过其他编码,如 ACSII、UTF8 等。但没有一个让我得到正确的格式。
编辑 一些代码示例我如何获取数据以及我如何处理它:
TcpClient client = new TcpClient(terminal.server_IP, terminal.port);
NetworkStream stream = client.GetStream();
stream.ReadTimeout = 2000;
string message = "some message for terminal";
byte[] msg = Encoding.Latin1.GetBytes(message);
stream.Write(msg, 0, msg.Length);
int bytes = stream.Read(data, 0, data.Length);
string rsp = Encoding.Latin1.GetString(data, 0, bytes);
EDIT2 所以,我不知道是什么问题......刚刚为 .NET Framework 版本 4.7.2 创建了一个新项目,在该项目中它的工作正常。感谢大家的建议,感谢@Jeppe Stig Nielsen
【问题讨论】:
-
这看起来很像 unicode。我真的很想知道为什么 UTF8 不起作用。你能发一个minimal reproducible example 让我们重现这个吗?
-
字节数组是否真的包含Unicode字符的文本表示?您如何查看结果。您从哪里获取数据?
-
能否提供字节数组,好吗?您可以使用
string dump = string.Join(" ", msg); Console.WriteLine(dump);进行操作。然后,请提供所需的 string -
@Taliga 有很多聪明的人在这里试图帮助你,如果有人要求你提供他们认为与问题的明确性相关的东西,你应该答应而不是拒绝这样的要求跨度>
标签: c# arrays string type-conversion byte