Backends PHP

웹개발자를 위한 문자 인코딩 기초 #8 – UTF-8

ASCII와의 호환성을 확보한 UTF-8

이전 편에서 소개한 UTF-16은 서러게이트를 활용한 방법으로 문자열이 잘못되었을 때 쉽게 파악할 수 있으면서도, 동시에 기본 다국어 평면 안의 문자를 2바이트 만으로 표현할 수 있는 효율성도 갖추었습니다. 그러나 UTF-16에는 아쉬운 부분이 바로 ASCII와의 호환성입니다.

ASCII에는 전통적으로 전산처리에서 특별한 기능을 하는 문자들이 있습니다. 이를테면 C언어를 비롯해 많은 언어에서 문자열이 끝났음을 의미하는 NULL 문자(U+0000), 줄바꿈에 사용되는 개행문자(U+000A), 띄어쓰기 등에 사용하는 공백문자(U+0020) 등이 그것입니다. 그런데 UTF-16에서는 문자 중간에 이들 문자의 ASCII 값이 섞여 들어가는 일이 발생합니다.

(more…)

Continue reading

Backends PHP

웹개발자를 위한 문자 인코딩 기초 #7 – UTF-16

기본 다국어 평면과 그 외의 문자에 다른 규칙을 적용한 UTF-16

UTF-32은 유니코드 값을 그대로 32비트로 옮겨서 만든 인코딩으로, 심플하다는 장점에도 불구하고 몇 가지의 단점이 있었습니다. UTF-16는 특별한 규칙들을 통해 유니코드의 값을 변형하여 이 문제들을 해결한 인코딩입니다. UTF-16 인코딩의 규칙은 크게 기본 다국어 평면에 속하는 문자와, 그렇지 않은 문자들로 구분됩니다.

(more…)

Continue reading

Backends MongoDB NoSQL PHP

Windows 환경에서 MongoDB를 PHP에서 사용할 수 있도록 설정하기

이전 글 Windows에 MongoDB 설치하기를 따라서 WIndows에 MongoDB를 설치하고, 데몬을 서비스로 잘 등록하였다면, 이제 PHP에서 이를 사용할 수 있도록 해야 합니다. 여기에 관하여서는 공식문서에도 간결하게 핵심이 정리되어 있습니다. 이 포스트에서는 이러한 설치과정에 익숙하지 않은 분들을 위해 스탭 바이 스탭으로 과정을 설명합니다.

(more…)

Continue reading

Backends PHP

웹개발자를 위한 문자 인코딩 기초 #6 – UTF-32 (UCS-4)

유니코드의 값을 그대로 사용한 UTF-32

앞서 살펴본 UCS-2는 기본 다국어 평면 만을 이용하여 2바이트로 깔끔하게 떨어지는 인코딩 방식을 만들어냈지만, 나머지 평면을 표시할 수 없는 문제가 있었습니다. UTF-32는 이와 정확하게 반대의 방법으로 만들어진 인코딩입니다. UTF-32는 유니코드의 모든 문자를 표현할 수 있도록 한 글자당 32비트를 사용하는 인코딩입니다.

UTF-32는 유니코드를 알고 있는 사람들은 무척 심플하다고 생각할 수 있는 규칙을 가지고 있습니다. UTF-32에서 앞의 2바이트는 [0x00 0x00]부터 [0x00 0x10]까지 몇 번째 평면인가를 표시합니다. 또한 뒤의 2바이트는 UCS-2가 그랬던 것처럼 해당 평면의 어느 문자인지를 나타냅니다.

(more…)

Continue reading

Backends PHP

웹개발자를 위한 문자 인코딩 기초 #5 – UCS-2와 HTML Entity Number

기본 다국어 평면 만을 과감하게 선택한 UCS-2 방식

앞서 살펴보았던 유니코드의 문제점을 해결하기 위한 가장 간단한 방법은 무엇일까요. 다름 아닌 쾌도난마(快刀亂麻), 평면을 표시하기 위한 숫자가 거슬린다면 과감하게 그것을 잘라내는 것도 하나의 방법이겠지요.

UCS-2 방식이 바로 이 방법을 사용한 인코딩입니다. UCS는 국제 문자세트(Universal Character Set)의 줄임말입니다. 한편 숫자 2는 이 인코딩이 2바이트로 이루어져 있다고 하는 것을 의미합니다. UCS-2는 유니코드의 다른 모든 평면을 포기하고, 오로지 0번 기본 다국어 평면 만을 선택합니다. 사실 우리 시대에 전세계에서 사용하고 있는 거의 모든 문자는 기본 다국어 평면에 들어있으니, 일견 타당한 방법이기도 합니다.

UCS-2의 인코딩의 16진수 값들은 유니코드 기본 다국어 평면과도 완벽하게 같습니다. 유니코드에서 16진수 0xAC00로 정해진 한글 “가”는, UCS-2에서도 동일하게 [0xAC 0x00]에 배정되어 있습니다. 이렇게 유니코드에서 평면을 나타내는 숫자를 떼어버리고 나니, 1글자의 크기가 딱 2바이트로 깔끔하게 떨어지는 것도 장점입니다.

(more…)

Continue reading