반응형



오랜만에 블로그 포스팅을 하게 되네요 ^^
그간 이직 하고 하고 싶던 프로그래밍 원없이 했습니다.

이제좀 프로그래머로서의 삶을 다시 사는 느낌이네요.

이번 프로젝트 진행중에 발생한 문제를 해결하며
메모차원에서 포스팅을 남겨둡니다.

한글을 전송함에 있어서 여러 가지 문제점들이 많이 발생하는것은 모두들 아실텐데요.
웹게임을 만들면서

DB -> java 데몬 -> javaScript 로 데이터를 전송하며 모두 UTF-8 로 처리했지만
어김없이 한글 깨짐 현상이 발생했습니다.

아마도 DB->java 데몬 으로 옮겨 오면서 UTF-8 처리가 제대로 되지 않은걸로 추측됩니다.



이문제에 대해서 해결한 방법을 아래에 적었습니다.
 java
 URLEncoder.encode("한글","UTF-8")
 URLDecoder.decode("한글","UTF-8")


java script
 function urldecode (str) { 
    return decodeURIComponent((str + '').replace(/\+/g, '%20'));  // 공백 문자인 + 를 처리하기 위해 +('%20') 을 공백으로 치환
  }
위와 같이  URL 엔코더와 디코더를 이용해서 문제를 해결했습니다.




URL 엔코더의 경우 주로 검색창에 한글로 검색했을 경우
검색된 페이지의 url을 보시면 "검색+한+글자" 와 같은 것을들 자주 볼수 있었을 텐데요.

URL로 엔코딩후 다시 디코딩을 하면 공백에 + 기호로 처리되어 위의
java Script 에서도 + 기호가 모두 들어간채로 디코딩 되었습니다.

그래서 위와 같은 함수를 만들었습니다.
핵심은 decodeURIComponent((str + '').replace(/\+/g, '%20'));  // 공백 문자인 + 를 처리하기 위해 +('%20') 을 공백으로 치환
이부분 입니다.

+를 만나면 그냥 공백으로 치환해 버리는거죠 '%20' <-- 요놈이 + 기호 입니다.

좀 불편하긴 하지만 한글이 깨지지 않고 다른 언어들 간에 전송을 할수 있는 방법으로는
이방법이 제일 안전하고 괜찮아 보입니다.


저도 인터넷 뒤져가며 배우고 만든거라 다시 인터넷으로 돌려드릴겸
그리고 다음에 또 사용할때를 대비해서 메모도 해둘겸 포스팅을 남깁니다.

모두들 유용하게 이용하시길 ^^








반응형

+ Recent posts