한글 코드 깨짐(인코딩 디코딩 오류) 문제가 생기는 이유
글. 오상문 sualchi@daum.net
원래 현대에 사용하는 컴퓨터는 대부분 ASCII 코드라는 1바이트(기본은 7비트, 확장형은 8비트) 코드 체계를 표준으로 사용합니다. 그래서 영문자와 특수문자 정도를 표현하기에는 7비트 크기로도 충분하고, 여기에 그래픽 등의 특수 문자까지 포함해도 8비트(1바이트)면 충분합니다.
그런데 ASCII 코드 체계 문제는 다양한 언어를 모두 다룰 수 없기에, 다양한 언어를 함께 사용하기 위한 여러 확장형 코드체계가 만들어졌는데,
이 때부터 한국어를 사용하는 우리에겐 행복이자 불행의 씨앗이 만들어집니다.
왜냐하면 우리 입장에서는 같은 "한국"이라고 표현할 수 있어서 좋긴한데, 코드 표기 방식이 달라지면 알아들을 수 없기 경우가 발생하기 때문입니다.
예를 들어, 여러분이 텍스트 편집기 창에서 한글을 입력한다고 가정해보죠. 그럼 편집기는 한글을 다루기 위해서 어떤 한글 코드 표기법을 사용해야 합니다. 그런데 우리는 관심을 안 갖죠. 한글만 잘 입력하고 보여주면 그만이니까요.
문제는 같은 내용을 다른 편집기로 열거나 다른 컴퓨터에서 처리할 때 입니다. 만약 다른 편집기에 같은 한글 코드 체계를 사용한다면 한글이 잘보이겠지만, 불행하게도 언어 코드 방식이 다르면 한글을 전혀 알아볼 수 없는 것입니다.
어느 컴퓨터나 같은 코드 체계를 쓰면 되지 않는냐 생각할 수 있습니다만, 이미 만들어진 시스템이 여러 코드를 섞어쓰니 그걸 통합하는 게 쉽지 않습니다.
다른 걸 떠나서라도, 심각한 것은 자기 컴퓨터에서 만든 내용도 언어 코드 체계가 다르면 서로 알아볼 수 없는 지경에 이르렀습니다. 쯧쯧...
초보 프로그래머도 그렇지만 경험자들도 마찬가지로, 프로그램을 개발하다가 한글이 제대로 나타나지 않는 경우를 종종 경험하게 됩니다. 그러면 어디에서 문제가 있는지 고민하고, 경험상 추측하거나 검색으로 해결 방안을 찾는데 이게 쉽게 풀릴 때도 있지만 곤란한 경우도 많습니다. (더군다나 DB자료를 이렇게 언어 코드를 변경하며 작업하다가는 원본자료를 복구하지 못하는 경우까지 발생할 수 있습니다. 왜냐하면, 코드 방식에 따라 서로 표현가능한 범위가 다른데 자기가 알아들지 못하는 코드는 특정 코드(?, 네모 등)로 바꿔버리는 경우도 있기 때문입니다. 이러면 원본으로 되돌리고 싶어도 되돌아갈 수 없습니다.
다음은 웹 개발자가 확인해야 하는 한글 코드 방식입니다. 즉, 언어 코드 체계가 다양한 지점에서 설정될 수 있으므로 이것에 맞게 개발하지 않으면 한글이 깨지는 경험을 하게 됩니다. (어느 한 부분이라도 문제가 생기면 깨진 한글을 경험하게 됩니다.)
- 서버 OS 인코딩 상태
- 웹 서버 인코딩 상태
- PHP 인코딩 상태
- 웹 소스 인코딩 상태
- (데이터베이스를 사용하는 경우) 데이터베이스 인코딩 상태
보시다시피 다양한 지점에서 언어 인코딩/디코딩이 일어나고 있습니다. 그러므로 일단 여러분이 개발하는 IDE 환경(언어), OS 인코딩을 확인하고 웹 서버나 데이터베이스에 설정된 언어 설정, HTML 언어 설정 등도 잘 확인해야 합니다.
<이상>
'소프트웨어 개발&환경' 카테고리의 다른 글
이클립스 쇼트컷 키 Keyboard_shortcuts_(3.0) (0) | 2018.08.04 |
---|---|
이미지 비교 및 특징점 자료 링크 (0) | 2018.07.16 |
유니코드 한글 영역 코드와 초성, 중성, 종성 분리 (0) | 2018.07.12 |
Dev C++ (DevCPP) 다운로드 리소스 사이트 (0) | 2018.01.01 |
순서도 기호 (0) | 2017.04.19 |