UTF-16

  • v
  • t
  • e
유니코드
부호화 형식
  • UTF-7
  • UTF-8
  • CESU-8
  • UTF-16
  • UTF-32
  • UTF-EBCDIC
  • SCSU
  • 퓨니코드
  • GB18030
UCS
양방향 텍스트
BOM
한중일 통합 한자
유니코드 범위 목록
유니코드 등가성
유니코드와 HTML
유니코드와 전자 우편
유니코드 글꼴
v  d  e  h

UTF-16(16-bit Unicode Transformation Format)은 유니코드 문자 인코딩 방식의 하나이다. 주로 사용되는 기본 다국어 평면 (BMP, Basic multilingual plane)에 속하는 문자들은 그대로 16비트 값으로 인코딩이 되고 그 이상의 문자는 특별히 정해진 방식으로 32비트로 인코딩이 된다.

UTF-16은 유니코드 컨소시엄과 ISO/IEC 10646에 의해 정의되어 있다. 유니코드는 거기에 추가적인 내용을 정하고 있다. 정확한 차이점은 유니코드 4.0 표준의 부록편 C 부분이 자세히 기술되어 있다. ISO 표준은 UCS-2 인코딩도 정의하며 여기선 BMP의 16비트 표현만을 다룬다.

기본 다국어 평면은 U+0000에서 U+FFFF 에 놓인 문자를 담고 있다. 이 영역에는 우리가 쉽게 생각할 수 있는 문자들이 포함되며, 한글, 한자 등은 모두 여기에 포함되어 있다. 이 영역에는 서러게이트 문자(surrogate)들이 준비되어 있어 16비트 이상의 문자를 표현할 때를 대비해 놓았다.

기본 다국어 평면의 문자들은 곧바로 16비트 값으로 대응되어 인코딩되며, 이 경우에는 인코딩된 바이트 스트링의 엔디언만 조심하면 된다.

UTF-16-문자

Bit
|15            8|7             0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|y y y y y y y y|x x x x x x x x|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

UTF-16BE-코드

    첫 번째 Byte         두 번째 Byte
|7             0| |7             0|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|y y y y y y y y| |x x x x x x x x|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

UTF-16LE-코드

    첫째 Byte          두 번째 Byte
|7             0| |7             0|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|x x x x x x x x| |y y y y y y y y|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

기본 다국어 평면에 포함되지 않는 문자들, 즉 16비트로 값을 표현할 수 없는 문자들은 서러게이트(Surrogate) 문자 영역에 해당하는 두 개의 16비트 문자로 변환되어 이 한 쌍(즉 32비트)이 그 문자를 나타내게 된다. 그 자세한 방식은 다음 그림을 통해 설명한다.

Bit
31            24|23           16|15            8|7             0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 0 0 0 0 0|0 0 0 z z z z z|x x x x x x y y|y y y y y y y y|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

High-Surrogate (U+D800 ... U+DBFF)

|15            8|7             0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 0 1 1 0 Z Z|Z Z x x x x x x|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Low-Surrogate (U+DC00 ... U+DFFF)

|15            8|7             0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 0 1 1 1 y y|y y y y y y y y|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

유니코드 문자 영역에서 상위 서러게이트는 U+D800에서 U+DBFF 까지의 값을 갖는다. 즉 최상위비트 6개의 값이 그림에서 보듯이 110110으로 일정하다. 마찬가지로 하위 서러게이트는 U+DC00에서 U+DFFF 까지의 값을 가지며 최상위비트 6개의 값은 110111 이 된다. 각 서러게이트 문자는 하위 10비트씩의 자유도를 갖는다. 따라서 주어진 문자를 10비트씩 두조각을 내서 상위 서러게이트와 하위 서러게이트에 배정한 것이다.

여기서 다음을 만족한다.

ZZZZ=zzzzz-1.

이 방법으로 UTF-16 인코딩이 가능한 유니코드 문자의 범위가 나온다.

zzzzz=00000 이라면, 문자는 16비트 이하로 표현이 가능하다. 즉, U+00xxxx 그대로 대응되는 값을 써주면 된다. 그렇지 않다면, ZZZZ=0000..1111 이 되며,zzzzz=00001..10000 = U+01xxxx .. U+10xxxx

이 두 개의 서러게이트 문자는 상위 서러게이트, 하위 서러게이트로서 전송이 된다. 이 방법으로 U+10FFFF 까지의 문자를 인코딩 할 수 있다.

예시

코드 점 문자 UTF-16 코드 값 글리프
122 (hex 7A) 소문자 Z(로마자) 007A z
27700 (hex 6C34) 물 수(한자) 6C34
119070 (hex 1D11E) 높은음자리표 D834 DD1E 𝄞 ()
水z𝄞
〔UTF-16로 인코드된 물 수, z, 높은음자리표()〕
인코딩 바이트 순서 바이트 열
UTF-16LE 리틀 엔디언 34 6C, 7A 00, 34 D8 1E DD
UTF-16BE 빅 엔디언 6C 34, 00 7A, D8 34 DD 1E
UTF-16 리틀 엔디언, with BOM FF FE, 34 6C, 7A 00, 34 D8 1E DD
UTF-16 빅 엔디언, with BOM FE FF, 6C 34, 00 7A, D8 34 DD 1E

같이 보기

외부 링크

  • Unicode Standard 4.0 Chapter 2 (PDF) 일반 구조. UTF-16는 2.5 Encoding Forms (S.20) 에 정의되어 있다.
  • Unicode TN12: UTF-16 for Processing
  • v
  • t
  • e
분류 문자 집합
초기 전기통신
ISO/IEC 8859
서지적 이용
  • ANSEL
  • ISO 5426 / 5426-2 / 5427 / 5428 / 6438 / 6861 / 6862 / 10585 / 10586 / 10754 / 11822
  • MARC-8
국가 표준
EUC
ISO/IEC 2022
MacOS 코드 페이지
("스크립트")
  • 아랍어
  • 켈트어
  • 센트유로
  • ChineseSimp / 확장 유닉스 코드
  • ChineseTrad / Big5
  • 크로아티아어
  • 키릴어
  • 데바나가리
  • 딩뱃
  • 에스페란토
  • 파시
  • 게일어
  • 그리스어
  • 구자라트어
  • 구르무키
  • 히브리어
  • 아이슬란드
  • 일본어 / ShiftJIS
  • 한국어 / 확장 유닉스 코드
  • Latin-1
  • 로마어
  • 루마니아어
  • 사미어
  • 심볼
  • 태국어 / TIS-620
  • 터키어
  • 우크라이나어
도스 코드 페이지
  • 100
  • 111
  • 112
  • 113
  • 151
  • 152
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 210
  • 220
  • 301
  • 437
  • 449
  • 489
  • 620
  • 667
  • 668
  • 707
  • 708
  • 709
  • 710
  • 711
  • 714
  • 715
  • 720
  • 721
  • 737
  • 768
  • 770
  • 771
  • 772
  • 773
  • 774
  • 775
  • 776
  • 777
  • 778
  • 790
  • 850
  • 851
  • 852
  • 853
  • 854
  • 855/872
  • 856
  • 857
  • 858
  • 859
  • 860
  • 861
  • 862
  • 863
  • 864/17248
  • 865
  • 866/808
  • 867
  • 868
  • 869
  • 874/1161/1162
  • 876
  • 877
  • 878
  • 881
  • 882
  • 883
  • 884
  • 885
  • 891
  • 895
  • 896
  • 897
  • 898
  • 899
  • 900
  • 903
  • 904
  • 906
  • 907
  • 909
  • 910
  • 911
  • 926
  • 927
  • 928
  • 929
  • 932
  • 934
  • 936
  • 938
  • 941
  • 942
  • 943
  • 944
  • 946
  • 947
  • 948
  • 949
  • 950/1370
  • 951
  • 966
  • 991
  • 1034
  • 1039
  • 1040
  • 1041
  • 1042
  • 1043
  • 1044
  • 1046
  • 1086
  • 1088
  • 1092
  • 1093
  • 1098
  • 1108
  • 1109
  • 1114
  • 1115
  • 1116
  • 1117
  • 1118
  • 1119
  • 1125/848
  • 1126
  • 1127
  • 1131/849
  • 1139
  • 1167
  • 1168
  • 1300
  • 1351
  • 1361
  • 1362
  • 1363
  • 1372
  • 1373
  • 1374
  • 1375
  • 1380
  • 1381
  • 1385
  • 1386
  • 1391
  • 1392
  • 1393
  • 1394
  • Kamenicky
  • 마조비아
  • CWI-2
  • KOI8
  • MIK
  • 이란 시스템
IBM AIX 코드 페이지
IBM 애플 매킨토시
에뮬레이터
  • 1275
  • 1280
  • 1281
  • 1282
  • 1283
  • 1284
  • 1285
  • 1286
IBM 어도비 에뮬레이션
  • 1038
  • 1276
  • 1277
IBM DEC 에뮬레이션
  • 1020
  • 1021
  • 1023
  • 1090
  • 1100
  • 1101
  • 1102
  • 1103
  • 1104
  • 1105
  • 1106
  • 1107
  • 1287
  • 1288
IBM HP 에뮬레이션
  • 1050
  • 1051
  • 1052
  • 1053
  • 1054
  • 1055
  • 1056
  • 1057
  • 1058
윈도우 코드 페이지
EBCDIC 코드 페이지
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37/1140
  • 38
  • 39
  • 40
  • 251
  • 252
  • 254
  • 256
  • 257
  • 258
  • 259
  • 260
  • 264
  • 273/1141
  • 274
  • 275
  • 276
  • 277/1142
  • 278/1143
  • 279
  • 280/1144
  • 281
  • 282
  • 283
  • 284/1145
  • 285/1146
  • 286
  • 287
  • 288
  • 289
  • 290
  • 297/1147
  • 298
  • 300
  • 320
  • 321
  • 322
  • 330
  • 352
  • 353
  • 355
  • 357
  • 358
  • 359
  • 360
  • 361
  • 363
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 410
  • 420/16804
  • 421
  • 423
  • 424/8616/12712
  • 425
  • 435
  • 500/1148
  • 803
  • 829
  • 833
  • 834
  • 835
  • 836
  • 837
  • 838/838
  • 839
  • 870/1110/1153
  • 871/1149
  • 875/4971/9067
  • 880
  • 881
  • 882
  • 883
  • 884
  • 885
  • 886
  • 887
  • 888
  • 889
  • 890
  • 892
  • 893
  • 905
  • 918
  • 924
  • 930/1390
  • 931
  • 933/1364
  • 935/1388
  • 937/1371
  • 939/1399
  • 1001
  • 1002
  • 1003
  • 1005
  • 1007
  • 1024
  • 1025/1154
  • 1026/1155
  • 1027
  • 1028
  • 1030
  • 1031
  • 1032
  • 1033
  • 1037
  • 1047
  • 1068
  • 1069
  • 1070
  • 1071
  • 1073
  • 1074
  • 1075
  • 1076
  • 1077
  • 1078
  • 1079
  • 1080
  • 1081
  • 1082
  • 1083
  • 1084
  • 1085
  • 1087
  • 1091
  • 1097
  • 1112/1156
  • 1113
  • 1122/1157
  • 1123/1158
  • 1130/1164
  • 1132
  • 1136
  • 1137
  • 1150
  • 1151
  • 1152
  • 1159
  • 1165
  • 1166
  • 1278
  • 1279
  • 1303
  • 1364
  • 1376
  • 1377
  • JEF
  • KEIS
플랫폼 특화
  • 아콘
  • 어도비 표준
  • ATASCII
  • 아타리 ST
  • BICS
  • 카시오 계산기
  • CDC
  • CPC
  • DEC Radix-50
  • DEC MCS/NRCS
  • DG 인터내셔널
  • ELWRO-Junior
  • FIELDATA
  • GEM
  • GEOS
  • GSM 03.38
  • HP Roman 확장
  • HP Roman-8
  • HP Roman-9
  • HP 계산기
  • LICS
  • LMBCS
  • NEC APC
  • NeXT
  • PETSCII
  • 샤프 계산기
  • TI 계산기
  • Ventura International
  • Ventura Symbol
  • WISCII
  • XCCS
  • ZX80
  • ZX81
  • ZX 스펙트럼
유니코드 / ISO/IEC 10646
기타 코드 페이지
  • ABICOMP
  • APL
    • 293
    • 310
    • 351
  • Cork
  • HZ
  • 조합
  • SEASCII
  • TACE16
  • TRON
  • UTF-5
  • UTF-6
  • UTF-8
관련 주제