我在比较字符串时遇到了一个奇怪的问题。我从客户端向我的服务器发送一个字符串(使用getBytes()
的字节)。我已经通过-Dfile.encoding=UTF-8
启动它们来确保客户端和服务器上的编码相同。如何在Java中执行独立于编码的字符串比较?
我注意到当我试图对从客户端接收的字符串执行valueOf
时将问题转换为枚举的问题。当我打印出字符串时,他们看起来恰好与相同。但是当我执行compareTo
时,我得到一个非零数字并且equals
返回false
。
我假设它是一个编码问题。虽然我不确定 - 当涉及到使用套接字的客户端服务器编程时,我仍然是一个新手。
这就是我得到:
Waiting for connections on port 9090
Connected to client: 127.0.0.1
received command: GetAllItems
The value is |GetAllItems| (from client)
The value is |GetAllItems| (from enum)
equals: false
我在做什么错?
UPDATE
这里是我如何重建从流的字符串。也许这是我做错事的地方?
byte[] commandBytes = new byte[1024];
in.read(commandBytes); //in is a BufferedInputReader
String command = new String(commandBytes);
你可以在调试器中运行,在比较中放置一个断点,然后在客户端和枚举字符串之间进行更深入的观察? – 2010-10-01 17:18:38
你如何重新分析你的字符串? – 2010-10-01 17:19:30
@Rob - 我想和那变成另一个问题:)这是一个摇摆应用程序。你有什么关于如何运行调试器的指针吗?我主要从事基于网络的应用程序,我通过连接到tomcat进行调试。 – 2010-10-01 17:20:41