【发布时间】:2020-04-05 21:53:32
【问题描述】:
我有一个有趣的问题。
首先我有一个 Java 用户界面。 UI 在某一点通过套接字连接到网络上的 rpi4。从那里使用 .writeUTF(string) 通过套接字发送数据。
在 rpi4 方面,我正在运行一个简单的 Python 3 脚本。它的唯一目的是吐出任何通过插座的东西,它确实如此。但在此之前,我使用 recv.decode('utf-8') 来解码字符串。
从 Java 我发送“fillOpen”
在python中解码后打印“fillOpen”
问题:
在 Python 脚本中对解码后的字符串执行字符串比较总是会导致错误。我已经这样设置了:
Command = recv.decode('utf-8')
If Command == "fillOpen":
#Do work
我也尝试不解码字符串并与编码字符串进行比较。因此:
Command = recv
FillOpenCommand =
("fillOpen").encode('utf-8')
If fillOpenCommand == Command:
#Do work
这些比较都不成立。
我读到 Java writeUTF 是 UTF8 编码但略有“不同”?
我可以调整 .writeUTF 以使用 Python 3 解码器吗?是否有另一种方法可以发送可以解析的数据,然后通过 Python 应用字符串 comp 来工作?
谢谢你们。
【问题讨论】:
-
你检查过你收到的字符串是什么字符吗?也许有一些尾随空格?
-
我试过这个。字符串解码后将所有\t ' ' '\n' 替换为 ' ' 但无济于事。
-
您使用的 Java 中的 writeUTF 方法是什么?这个? docs.oracle.com/javase/7/docs/api/java/io/…
-
你能在对它执行任何操作之前显示从套接字读取的值的repr吗?