我正在读取套接字流,并且在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
的数据
由于流中的字节是使用某种编码进行编码的,因此必须在C#和Java代码中显式设置正确的编码。
它们使用不同的默认编码。
要使字节流可互操作,您必须坚持一种用于将字符串编码为字节的编码。或在流中的某处交换编码类型。