회원가입 ID/PW 찾기

하드웨어 설계에 관련한 공개 강좌를 게재하는 공간입니다.
운영진에 의해 강좌글은 편집되며, 공익을 위한 게시글은 '하드웨어 강좌'란으로 이동될 수 있습니다.

콘텐츠 수 129

유니코드에 대해서..

하드웨어 일반 구매수 0 조회 수 2043 2007.08.16 07:48:05
판매자 아크마 판매 납포인트 무료 평점 1.0점 / 총 2명 참여
 

1. SBCS (Single-byte Character Sets)

ASCII로 1~128까지 숫자를 표시하는 것 알고 계시죠? 그러니까 2^7만을 쓰는 거죠. 그런데 character 형은 아시다시피 1byte이고 따라서 1bit가 남게 됩니다.


예전 도스시절에 한글이 깨지면 보통 선문자나 유럽어의 움라우트가 불규칙하게 배열되는 것으로 알 수 있었습니다. 이런 선문자나 움라우트가 나머지 128개의 문자로서 채워지게 되는 거죠.


그래서 128+128 = 256 = 2^8 = 1 byte 가 되게 됩니다. 이때 마지막 한 비트는 음수를 표시하는 비트이고, 이 음수표시 비트가 1이 될 때, ASCII가 아닌 확장코드를 의미하게 됩니다.


2.MBCS (Multibyte Character Sets)

그런데 문제는 한글이나 한문 같은 경우는 128개로 표현할 수 없다는 점입니다.

그래서 2 character를 사용하게 됩니다. 아시다시피 도스환경이나 WAP같은 데서 보면 한글은 영문에 비해서 두 배의 넓이를 가지고 있습니다.(win에서는 거의 그런 경우가 없지만요. 이건 또 다른 문제입니다.)


위에서 설명드릴 때 음수표시 비트로 확장코드를 표시한다고 했었죠? MBCS의 경우에는 (음수)(음수) 로 표시하게 됩니다.

경우의 수를 따져보면,

(128 + 128) * (128 + 128)이니까,

= 128^2 + 2*128^2 + 128^2

이중에서 제일 마지막에 있는 항, 128^2이 MBCS를 표시하는 경우의 수죠.

한글이나 일어, 한문은 이런 방식으로 표시를 하게 되죠.

(참고로 제일 앞의 128^2는 ASCII 두 문자가 배열되는 경우의 수죠)


한글도스에서 일본어가 깨지고, 일본 도스에서 한국어가 깨지는 것은 각 나라마다, 각 코드마다 MBCS 규격이 다르기 때문입니다.


3. Unicode

이런 MBCS를 갖고는 범용적인 프로그램을 만들수 없습니다.( MSDN에 이렇게 나와있죠 ^^; )

어떤 프로그램들은 언어를 선택하는 부분이 있고, 언어를 선택하자마자 그 나라의 언어로 나오는데, 이런 프로그램들은 UNICODE를 쓰고 있다고 보시면 됩니다.


UNICODE는 256 * 256 = 65536의 문자 map를 사용합니다. 이것은 모든 언어의 모든 문자를 담을 수 있게 잡힌 거죠.


map은 ... 찾고 나서 보충해 드립죠.



MSDN을 참조하시려면,

MSDN -> visual studio 6.0 Docu -> visual C++ Docu -> Using visual c++ -> visual c++ programmer's guide -> run time library reference -> run time routines by category -> interntionalization 을 찾아보세요.

msdn없으면 온라인 msdn을 이용하세요.

http://msdn.microsoft.com/default.asp




///////////////////////////////////////////////////////////////////////////////////////////////

위 내용은 옛날 예적에 제가 저장해놓은 자료입니다.



모르는 것이 무엇인지 스스로 정리하고 질문하는 습관을 가집시다.
무성의/광범위하거나 직접 해보지 않고 올리는 질문은 서로를 피곤하게 합니다.
질문쪽지는 사절이오니 게시판에 글을 남겨주세요. 그래야 다같이 공유할 수 있으니까요.


profile
컴쟁이 2013.02.02 00:03
잘보고 갑니다
profile
시나브로69 2017.06.24 14:46
좋은 자료 감사합니다.
profile
11시22분 2019.04.17 10:55
감사합니다.
profile
-3948 2022.09.26 15:41
좋은자료 감사합니다
search

연재강좌(하드웨어 엔지니어 되기) : (12)
전자 하드웨어 기초 : (14)
8051 어셈블리 강좌(by 허인교수님) : (7)
■ 제3장. 명령어 2019-04-17 14:58
AVR 기반의 라인트레이서(by 아크마) : (9)
용어도 모르겠어요 : (15)
■ 8051이란? 2019-04-17 00:17
■ 아트워크 기초 2019-04-17 14:40
■ MCU 기초 2019-12-19 10:58
■ 펌웨어 기초 2019-04-17 14:44
■ 납땜하기 2019-07-26 09:49
하드웨어 일반 : (15)
■ ASCII Table 2019-04-17 14:19
PCB설계와 제조의 이해 : (7)
■ CAD-Utility 2021-09-02 13:41
EMC 적합성을 고려한 PCB설계 : (43)
PCB의 기초 : (14)
바이패싱과 디커플링 : (9)
ESD 보호 : (3)
■ ESD 보호 - 개요 2017-06-22 10:24
클럭회로 : (17)
PCB 자주 묻는 질문 : (1)
Altium 사용하기 : (6)
ETC
  • 인생은 반복된 생활이다. 좋은 일을 반복하면 좋은 인생을, 나쁜 일을 반복하면 불행한 인생을 보내는 것이다.
    - W.NL.영안
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.