>> OS의 영향 관계 <<
확장한글 문제 해결을 위한 유형 분류 기준으로서 시스템 OS의 문자 인코딩 설정이 무엇인지를 크게 고려할 필요는 없다.
시스템 구성의 가장 외부에 위치하는 웹 브라우저(또는 클라이언트 프로그램)로부터 가장 내부의 DB에 이르기까지 문자열 데이터가 전달되어 가공/처리되는 과정에서는 OS의 영향을 직접 받지는 않는다. 즉, OS 위에서 동작하는 응용프로그램들이 데이터를 처리하고 주고받는 과정에는 응용 프로그램의 설정과 인코딩 방식이 데이터 처리에 영향을 주는 요소이며, 글자가 깨지는 이유는 데이터를 직접 다루는 응용프로그램들이 그것을 제대로 변환하지 못하기 때문이다. (2000년 이후의 대부분의 OS는 유니코드 입출력 처리 가능)
예를 들어 유닉스와 리눅스 운영체제에는 오래 전부터 iconv라는 이름의 프로그램 및 표준 API 라이브러리가 포함되어 있다. 이 API는 EUC-KR, MS949, UTF-8을 비롯한 많은 인코딩 타입 간의 데이터 변환을 지원하고 있어서, 유닉스와 리눅스 운영체제 기반의 응용프로그램들은 이 API를 통해 원하는 인코딩 방식으로 문자열을 변환하여 처리할 수 있다. 즉, OS는 어떤 인코딩의 문자열이든 모두 사용할 수 있는 기반을 제공하고 있고, 그것을 이용해서 어떤 식으로 동작할 것인가는 응용프로그램을 어떻게 만드느냐에 따라 다르다고 할 수 있다.
또한 C/S 시스템에서의 응용프로그램의 경우, windows 9x 계열에서 동작하도록 하기 위해 MS949(또는 MBCS) 기반으로 컴파일 되어 있을 수 있다 (Widows 2000 이전 버전). 그러나 이 또한 OS 문제는 아니며 응용프로그램을 수정해야 될 문제이므로 OS의 영향이 있는 것은 아니다.
▶ OS와의 영향 관계가 존재하는 경우의 예시
대부분의 경우 위와 같이 OS의 영향을 받지 않겠지만, 응용프로그램들의 처리 과정에서 입력된 데이터를 파일로 입/출력하는 경우, 파일명에 한글이 포함되면 해당 글자가 인식되지 않아, 파일 입/출력에 문제가 발생하는 경우가 있을 수 있다. 예를 들어 사용자가 게시판 등에 한글이름으로 된 파일을 첨부할 경우, 해당 파일을 응용프로그램 서버에 업로드 및 다운로드하는 과정에서 OS의 문자 인코딩 영향을 받아 파일명이 복원되지 않을 수 있다. (OS의 인코딩이 확장한글 미지원 또는 한글 미지원)
>>개발 언어의 영향 관계<<
C/S 시스템에서 응용프로그램을 작성할 때, OS가 제공하는 입출력 API와 콤포넌트를 사용하기 때문에 어떤 언어로 개발하는가에 따라 차이가 나타나지는 않는다. 다만 어떤 API를 사용하여 어떤 문자 인코딩 기반으로 응용프로그램을 작성하는지에 따라 확장한글 문제가 발생할 수도 있는 것이다.
참고로 Java는 모든 문자열 처리를 유니코드 기반으로 수행하고, 입출력 시에 필요한 경우에 특정 인코딩 으로 변환/처리하는 과정을 거친다. 이때 입출력 단계에서 어떤 인코딩을 사용하도록 했는가에 따라서, 내부적으로는 유니코드로 문자열 처리를 하는 Java 응용프로그램이라도 확장한글 문제가 발생할 수 있다. 요컨대 응용프로그램에서 확장한글 문제 발생 여부는 어떤 개발 언어와 어떤 OS를 사용했는가보다는, 응용프로그램이 어떤 문자 인코딩으로 데이터를 입출력하고 처리하도록 제작되었는가에 따라 달라진다고 할 수 있다
'03.업 > 14.인코딩디코딩' 카테고리의 다른 글
UTF-8 / EUC-KER : 인코딩 방법 in java & getByte? (0) | 2023.06.08 |
---|