我正在开发Android应用程序,我需要通过TCP/IP与本地服务器进行通信。我们使用JSON(我使用Jackson的解析器)将消息传递给服务器。Android/Java:将UTF-8转换为UTF-16
当我ObjectMapper.writeValueAsBytes()使用杰克逊它产生以UTF-8字节?我们的本地服务器是用C#.NET编写的,并且使用UTF-16 Little Endian编码。
当字节到达服务器时,它无法解析JSON。当我通过将json字节转换为字符串来调试服务器时,我可以看到字符串的某些部分被加密。我怀疑是因为这个UTF-8到UTF-16的Little Endian问题。
我的问题是,我该如何将这些JSON个字节是UTF-8到UTF-16小端之前,我把它传递给服务器。
感谢
我会改变服务器。首先,通过网络的任何事情的默认是网络再见订单。网络字节顺序是大端,不小。其次,utf-8是在网络中传递字符串数据的标准。 UTF-16是非常不正常的,并且往往只能用于那些在他们认为2个字节足以容纳世界上任何角色的日子里创建的旧语言。如果你需要在内部使用utf-16,我会在输入阶段转换它,并在输出时转换回utf-8。 –
将字节打印为十六进制值而不是文本字符串(然后在此处显示一个小样本,尤其是包含用于比较正常对比加扰的字节的加密部分)......可能您的转换只是制造非字母字符的混乱。 **对于更快的答案**:制作一个示例JSON(显示它),然后显示相同的JSON字节如何查找(加扰等)以获得建议。我怀疑是UTF-8/16问题,虽然... –