我在比較字符串時遇到了一個奇怪的問題。我從客戶端向我的服務器發送一個字符串(使用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