Java字符串结果与C不同#
我正在读取socket流,并将字节数组转换为Java和amp;C#,但结果不同
C#代码:
string text = Encoding.Default.GetString(ms.ToArray());
Java代码:
String text = new String(data);
我在研究中遇到的一个潜在问题是C#的默认编码是UTF-32
&;Java的wasUTF8
,以及C#使用小尾端,Java使用大尾端,因此解决方案是在Java中将字符集定义为UTF-32LE
,但即使如此,它返回的结果也与C#完全不同,并且大多数(如果不是全部的话)字符串都是�
的组合
正如关于Java中方法的额外信息一样,我使用ByteArrayOutputStream
存储来自DataInputStream
的数据&;在C#中,我使用MemoryStream
存储来自NetworkStream
的数据
# 1 楼答案
由于流中的字节是使用某种编码进行编码的,因此必须在C#和Java代码中显式设置正确的编码
它们使用不同的默认编码
为了使字节流具有互操作性,您必须坚持使用一种用于将字符串编码为字节的编码。或者在流中的某个地方交换编码类型