我正在读取套接字流并将字节数组转换为Java和C#中的单个字符串,但结果不同...
C# 代码:
string text = Encoding.Default.GetString(ms.ToArray());
爪哇代码:
String text = new String(data);
我在研究时遇到的潜在问题之一是 C# 的默认编码是UTF-32
和 Java 的默认编码是UTF8
,以及 C# 使用小端序,Java 使用大端序,所以解决方案是在 java 中将字符集定义为UTF-32LE
但即便如此,它返回的与 C# 完全不同,大多数(如果不是全部(字符串都是�
的组合
就像我在 Java 中的方法的额外信息一样,我正在使用ByteArrayOutputStream
来存储来自DataInputStream
的数据,而在 C# 中,我正在使用MemoryStream
来存储来自NetworkStream
的数据
由于流中的字节是使用某种编码编码的,因此必须在 C# 和 Java 代码中显式设置正确的编码。
它们使用不同的默认编码。
要使字节流可互操作,必须坚持使用一种用于将字符串编码为字节的编码。或者在流中的某个位置交换编码类型。