자바스크립트를 사용하여
유니코드(unicode) 문자열로 변환하는 방법을 알아봅니다. 어떻게하면 unicode를 문자열 Character로 변환하거나 반대로 unicode로 변환할 수 있을까요?
# 문자열을 unicode로 변환하기
먼저 문자열을 unicode로 변환하는 방법을 알아봅니다. 이때 사용 가능한 방법으로 아래와 같이 사용합니다.
'문자'.charCodeAt(0).toString(16);
이때 여러 문자를 동시에 변환하지 않고 문자 하나씩 변환할 수 있습니다. 예를들어 '한글'이라는 문자를 변환해볼까요?
! '한글'이라는 문자를 변환할 경우
한자씩 변환해야하므로 각각 입력해봅니다.
'한'.charCodeAt(0).toString(16);
수행하면 아래처럼 나타납니다.
\d55c
다음은 '글'을 변환해봅니다.
'글'.charCodeAt(0).toString(16);
이번에도 실행해볼까요?
\ae00
즉 단어 '한글'의 unicode는 아래와 같음을 확인했습니다.
\d55c\ae00
! 문자를 unicode로 변환하는 함수 만들기
하나씩 입력하려니 단어나 문장이 길어지면 매우 힘들겠군요. 간단하게 함수로 만들면 편할 것 같으니 함수를 작성하여 사용해보겠습니다.
charToUnicode = function(str) {
if (!str) return false; // Escaping if not exist
var unicode = '';
for (var i = 0, l = str.length; i < l; i++) {
unicode += '\\' + str[i].charCodeAt(0).toString(16);
};
return unicode;
}
이제 위함수를 사용해서 한번 어떻게 결과나 나타나는지 직접 실행해보겠습니다.
charToUnicode('한글');
"\d55c\ae00"
생각한것처럼 잘 동작합니다~
# unicode를 문자로 변환하는 방법
이번에는 반대로 유니코드를 한글로 변환해보려고 합니다. 어떻게 하면될까요? 이때는 String 객체의
fromCharCode() 메소드를 사용합니다.
String.fromCharCode(parseInt(unicode,16))
! unicode(유니코드)를 문자열로 변환 예제보기
위와 같이 첫번째 인자로 변환할 unicode값을 입력하고 두 번째는 16을 입력합니다. 그럼 방금 전에 한글로 변환한 값을 다시 unicode로 변환해보겠습니다.
String.fromCharCode(parseInt('\d55c',16));
String.fromCharCode(parseInt('\ae00',16));
위 코드를 실행하면 아래처럼 각각 반환됩니다.
'한'
'글'
# 마치면서
여기까지 unicode에서 문자로 ... 다시 문자에서 unicode로 변환하는 방법을 알아보았습니다. 언제 필요할까요? 상황에 따라 다르겠지만 문자열 출력시 인코딩을 인식 못하는 경우.. unicode값만 인식하는 경우가 필요할 수 있습니다. 이때 원래 문자값이 아닌 unicode로 변환하여 입력하면 정상 출력될 수 있습니다.
아래는 문자열을 유니코드로 변환하는 위 함수를 만들어 보았습니다. 직접 입력 후 변환해보세요.