Я анализировал некоторые файлы Excel, предоставленные отделом контента, и иногда замечал, что две одинаковые строки не равны. Буквально я вижу в отладчике:
String s1 = ...;// "some string" String s2 = ...;// "some string" s1.equals(s1) -> false
изучив содержимое строки, я заметил, что в первой строке есть обычные пробелы между словами, а во второй - NBSP (неразрывный пробел). Итак, мне пришлось не только обрезать все входящие пользовательские строки, но и заменить nbsp на обычные пробелы:
str1 = str1.replace("\u00a0"," ");
где - это число.
И итог этой истории таков: никогда не доверяйте данным пользователей. Обрежьте его, замените все недопустимые символы, проверьте наличие пробелов.