Java字符串结果不同于C#

问题描述 投票:0回答:1

我正在读取套接字流,并且在Java和C#中都将字节数组转换为单个字符串,但是结果不同...

C#代码:

string text = Encoding.Default.GetString(ms.ToArray());

Java代码:

String text = new String(data);

[我在研究中遇到的潜在问题之一是C#的默认编码为UTF-32,Java的默认编码为UTF8,以及C#使用little endian,Java使用Big endian,因此解决方案是在Java中定义字符集为UTF-32LE,但即使如此,它返回的结果也与C#完全不同,并且大多数(如果不是全部)字符串都是

的组合

[关于Java方法的额外信息,我正在使用ByteArrayOutputStream存储来自DataInputStream的数据,在C#中我正在使用MemoryStream存储来自NetworkStream的数据

java c# datainputstream bytearrayoutputstream
1个回答
1
投票

由于流中的字节是使用某种编码进行编码的,因此必须在C#和Java代码中显式设置正确的编码。

它们使用不同的默认编码。

要使字节流可互操作,您必须坚持一种用于将字符串编码为字节的编码。或在流中的某处交换编码类型。

© www.soinside.com 2019 - 2024. All rights reserved.