2024.1.20 티스토리 작성
회원마다 다른 로고를 보여달라는 요청이 들어왔었다. 그에 나는 S3에 한글명으로 파일을 올리고 회원의 소속을 받아와 S3 URL로 요청을 하기로 결정했다.
같은 '바나나'인데 파일을 찾을 수 없다는 에러가 뜨는 것이다.
'바나나'와 '바나나'가 다르면 뭐가 똑같다는 걸까?!

구글링도 열심히 해보며 해결법을 찾았으나 찾지 못해 절망하고 있었는데 GPT에 물어보기로 결정했다.
처음에는 권한 문제인줄 알았으나 인코딩 방법에 차이가 있었다. 인코딩 된 문자열을 보니 같은 '바나나'인데 달랐다.
아래는 GPT에 질문한 방법이다.

즉, S3의 인코딩 방식이 단순 문자열의 인코딩과 다르게 진행되는 것이었다..
String.prototype.normalize()
normalization을 사용해서 두 문자열을 같은 정규화 방법으로 정규화한 뒤 인코딩을 진행하면 같은 결과가 나온다.
찾아보니 S3는 NFD 방법으로 정규화 되어있었다.
따라서
encodeURIComponent(변수명.normalize('NFD'))
를 진행하면 해결된다.