현상
- 분명히 똑같은 문장인데 URI Encoding이 다르게 나타나서 FILEPATH및 HASH키가 다르게 먹히는 현상 확인
- 아무리 봐도 화면상에는 똑같은 문장
- 그러나 URIEncoding시 뭔가 더 길게 나오는게 확인
원인
- 일본어 인코딩은... 조합형과 문자형이 있음.
- 조합형은 2개의 문자를 하나처럼 보이게 하는 방식의 유니코드 형식
- 문자형은 1개의 문자에 모든것을 표시하는 방식
가, 까
, 다, 따
와 같이 우리나라에서 쌍자음을 표시하기 위해서 ㄱ가
, ㄷ다
로 하는거같은 느낌으로 해서 분명히 1바이트면 될게 2바이트가 되서 괴롭히게 됨
해결 방법
- 둘중 하나를 무조건 써야하지만, 문자열의 특성을 고려해서 하나로 통일한 문자형 일본어 인코딩을 사용하도록 하자
- Rust에서는 일본인이 만든 Japanese Unicode Combine Cargo가 있다.
비고
- 확인해보니 다른곳에서도 문제가 많이 발생하는 듯 함
- 일본어는 전각, 반각, 조합형 등 여러 고통스러운 경우가 많이 특히 주의가 필요한 듯 함. 전/반각 조합/문자형등에 구애받지 않도록 반드시 해시처리될 문자열은 꼭 Sanitizer같은거를 돌리도록 하자
참고 자료