업데이트:

블로그 Javascript 작업 중 URL의 hash값을 가져와서 뭔가를 처리해야 하는 상황이었는데,
hash값 표출 시 영어는 잘 나오나 한글이 깨져서 나오는 현상이 발생, 기나긴 삽질과 검색이 동원된 끝에 방법을 알아냈다.

영어/한글 hash값이 포함된 URL로 비교를 해보자.

1
2
3
"https://selosele.github.io/#test"

console.log(location.hash); // #test 

영어는 정상적으로 출력되는 반면

1
2
3
"https://selosele.github.io/#테스트"

console.log(location.hash); // ""

따옴표나 #@$@#!$@!$#$ 등 알아볼 수 없는 문자로 출력되기도 한다.

해결책

정상적인 문자열로 되돌려주는 decodeURI 함수를 사용해야 한다.

1
console.log(decodeURI(location.hash)); // 테스트

Hero image from Alltechbuzz