문자셋(Character set), ASCII, ANSI, Unicode
DICOM 2022. 6. 10. 13:09DICOM에 정의되어 있는 Character set에 대해 정리 하려고 하였으나 그 전에 ASCII, ANSI, Unicode에 대해 먼저 정리해 봅니다.
문자셋, ASCII
문자셋은 예를 들어 1, 2, 3, 4... A, B, C, D... 처럼 문자들을 모아놓은 집합을 문자셋 이라고 하고 아래 ASCII Table의 문자들의 집합이 ASCII의 문자셋이 됩니다. 이런 문자셋의 문자와 숫자 Code(0, 1, 2.....127) 를 mapping하는 규칙을 Encoding 이라고 합니다.. 이 ASCII 는 0 ~ 127 까지 매핑된 128개의 문자가 있다는 것을 기억해 둡시다.
ASCII code의 0 ~ 31 에 해당하는 문자와 마지막 127 번 DEL을 Control 문자라고 합니다. 실제 눈에 보이도록 표시되는 문자가 아니고 제어를 위해 사용되는 문자입니다.
세상에는 많고 많은 문자셋/인코딩이 존재 합니다. 그런데 ASCII 를 알아야 하는 이유는 거의 대부분의 문자셋이 0 ~ 127 까지의 문자는 ASCII code와 동일하게 사용하고 있기 때문입니다.
ANSI
ASCII 가 어떤 문자셋에서도 공통으로 쓰인다는 것을 알았고 이제 이것만으로 세계의 모든 문자를 표현할 수가 없다는 것도 알게 되었습니다. ASCII 가 1 byte로 표현 되고 1 byte는 0 ~ 255 까지 인데, ASCII 는 최상위 bit를 0으로 두어 0 ~ 127까지만 쓰고 있습니다.
그런데 ASCII Code의 최상위 bit을 1로 두면 추가로 128개의 문자를 더 사용할 수 있었기 때문에...
나온것이 ANSI 이며 128부터 문자를 확장해서 쓸수 있다는 의미로 "확장된 ASCII" 라고도 합니다.
그런데 이 확장 문자셋은 "언어"의 종류에 따라 달라지기 때문에 한국어, 일본어, 중국어 일때의 확장 문자셋이 모두 다릅니다. 언어에 따른 확장 문자셋의 변경은, 언어에 따른 Code page의 변경에 의해 가능해 집니다.
그리고 결정적으로 대부분의 문자셋은 ISO에 번호를 부여 받아 등록되어 있지만 ANSI는 표준이 아닙니다.
그래서 ANSI는 거의 사용되지 않고 대부분 Unicode가 사용됩니다.
Unicode (UTF-8, UTF16)
모든 문자를 표현 가능하도록 Unicode가 만들어 졌고 대표적으로 UTF-8, UTF-16이 있습니다.
UTF-8
이 문자셋은 1 ~ 4 byte로 표현이 가능합니다. 0 ~ 127 까지는 역시 ASCII code를 그대로 사용하고 1byte에 저장됩니다.
그래서 만약 keyboard 자판 위의 문자만 이용해서 텍스트 파일로 저장하는 경우에는 ANSI 나 UTF-8 로 저장된 파일이 동일한 내용을 가지게 됩니다.
그런데 이제 128 값 이후에는 ANSI와 UTF-8의 Code가 달라지므로, 128 이후의 문자가 기록이 되면 ANSI 와 UTF-8 로 저장되는 파일은 서로 달라지게 됩니다.
즉, UTF-8 에서 어떤 문자의 Code가 0 ~ 127 까지는 ASCII와 동일하고, Code 값이 128 이상이면 2 ~ 4 bytes 의 크기를 갖게 됩니다.
UTF-16
0 ~ 127까지의 문자는 역시나 ASCII 와 동일한데.... UTF-16은 한 문자가 저장되는 기본 크기가 2 bytes 부터 시작됩니다.
즉, ASCII code 값도 2byte 단위로 기록됩니다.
'DICOM' 카테고리의 다른 글
Transfer Syntax는 어떻게 사용되나요? (0) | 2022.06.11 |
---|---|
DICOM Character set (0) | 2022.06.10 |
Lookup Table (0) | 2022.06.07 |
Physicians (0) | 2022.06.07 |
De-identification (0) | 2022.06.07 |