java - .net<->Java 文本编码在开发环境中有效,但在 "production"处失败

标签 java vb.net ipc

我将以下字节数组从 Java 应用程序发送到 Vb.Net 应用程序:

byte[] buffer = "<CMD>{§}SETUP US THE BOMB".getBytes("UTF-16LE");

下面是Vb.Net端如何将数组解析为字符串:

Dim result as String = (New System.Text.UnicodeEncoding(False, False)).GetString(buffer)

之后,我将生成的字符串记录到控制台(字节转储在到达时在 VB.Net 上完成):

HEX: 60 0 67 0 77 0 68 0 62 0 123 0 167 0 125 0 83 0 69 0 84 0 85 0 80 0 32 0 85 0 83 0 32 0 84 0 72 0 69 0 32 0 66 0 79 0 77 0 66 0
STR: <CMD>{§}SETUP US THE BOMB

如果我不使用 eclipse 并且编码似乎以某种方式损坏,则接收到的字节数组会有所不同...

HEX: 60 0 67 0 77 0 68 0 62 0 123 0 239 0 191 0 189 0 125 0 83 0 69 0 84 0 85 0 80 0 32 0 85 0 83 0 32 0 84 0 72 0 69 0 32 0 66 0 79 0 77 0 66 0
STR: <CMD>{�}SETUP US THE BOMB

当我从开发切换到实际使用代码时,Java 端似乎发生了一些事情。

使用 Udp 传输将字节数组本地发送到 Vb.Net 应用程序。

我使用普通的 java.net.datagramsocket 进行通信。

更新

我也尝试从 Java 获取数组日志,因为我认为这可能会有所帮助:

[D]=Development [P]=Production [J]=Java [R]=Received by Vb.Net

[D][J]: 60 0 67 0 77 0 68 0 62 0 123 0 -89 0 125 0 83 0 69...

[D][R]: 60 0 67 0 77 0 68 0 62 0 123 0 167 0 125 0 83 0 69...

[P][J]: 60 0 67 0 77 0 68 0 62 0 123 0 -17 0 -65 0 -67 0 125 0 83 0 69...

[P][R]: 60 0 67 0 77 0 68 0 62 0 123 0 239 0 191 0 189 0 125 0 83 0 69...

肯定有问题,就好像字符串在发送之前重新编码一样。

最佳答案

这对于正确的评论来说太长了,但这并不是一个真正的答案......

我尝试在 VB .NET 中对字符串进行编码,但没有与您相同的字节:

Dim buf As Byte()
buf = System.Text.UnicodeEncoding.Unicode.GetBytes("<CMD>{§}SETUP US THE BOMB")

结果是:

60 0 67 0 77 0 68 0 62 0 123 0 167 0 125 0 83 0 69 0 84 0 85 0 80 0 32 0 85 0 83 0 32 0 84 0 72 0 69 0 32 0 66 0 79 0 77 0 66 0

而 Java 的缓冲区是:

60 0 67 0 77 0 68 0 62 0 123 0 239 0 191 0 189 0 125 0 83 0 69 0 84 0 85 0 80 0 32 0 85 0 83 0 32 0 84 0 72 0 69 0 32 0 66 0 79 0 77 0 66 0

所以我想说问题来自于 Java 编码,因为该字符应该输出为两个十六进制数字而不是六个......

关于java - .net<->Java 文本编码在开发环境中有效,但在 "production"处失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36990358/

相关文章:

java - Java 和 C++ 之间的 IPC

c - 如何从RAM中读取变量值?

java - spring-mvc 何时使用@CookieValue

java - Android如何将Activity.class作为函数的参数传递

java - 这个过度渴望的加载器对象是代理模式实现的示例吗?

linux - Linux 上的快速用户空间进程间通知方法?

java - 从字符串中查找时间戳模式

vb.net - 用户界面消失并出现错误 : out of memory

VB.NET - Salesforce POST 请求返回 400 错误请求错误

html - WebClient.DownloadString 变得乱码