분명히 같은 문자열인데
String::equals()가 false 가 나오는 오류
엑셀 입력값과 JSON의 입력값을 String으로 추출해서 사용하는데
System.out.println("문자열1:" + str1); // 1
System.out.println("문자열2:" + str2); // 2
System.out.println(str1.equals(str2)); // 3
1과 2에서 출력하는 값이 같은데, 3은 false를 찍어내는 오류를 만났다 (둘 다 한글이었다.)
결과적으로 둘의 Unicode가 달라서 생긴 문제였다. 아마 인코딩 형식이 달랐던 것 같다. 이 문제를 해결하기 위해서 다음과 같은 메서드를 만들어서 사용했다.
/**
* 문자열 유니코드 정규화
*/
private String normalize(String input) {
return Normalizer.normalize(input, Normalizer.Form.NFC);
}
normalize(str1).equals(normalize(str2)); // true