У меня странная проблема со сравнением строк.Я отправляю строку на мой сервер (в байтах, используя getBytes()
) от клиента.Я гарантировал, что кодировка на клиенте и сервере одинакова, запустив их оба с -Dfile.encoding=UTF-8
.
. Я заметил проблему, когда пытался выполнить 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
Что я делаю не так?
ОБНОВЛЕНИЕ
Вот как я восстанавливаю строку из потока.Возможно, здесь я что-то не так делаю?
byte[] commandBytes = new byte[1024];
in.read(commandBytes); //in is a BufferedInputReader
String command = new String(commandBytes);