Java String::equals() 오류

yesjuhee·2024년 11월 18일

Java 공부

목록 보기
17/17

분명히 같은 문자열인데 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
profile
https://yesjuhee.tistory.com/

0개의 댓글