Appendix C. Unicode UTF-8 encoding

UTF-8 is an efficient encoding of Unicode character - String that recognizes the fact that the majority of text-based communications are in ASCII. It therefore optimizes the encoding of these characters.

Unicode is preferred to ASCII because it permits the inclusion of accents, scientific symbols and characters used in languages other than English. The UTF-8 format is a standard encoding that provides the most efficient means of encoding 16-bit Unicode characters in cases where the majority of characters are in the ASCII range. Both UTF-8 and the alternative UTF-16 encoding are supported by all widely used operating systems and major applications. UTF-8 was adopted is an IETF Internet Standard (it was initially adopted by IETF in 1996 to restrict some code values in 1998 and 2003). In 2008 UTF-8 became the most widely used for of encoding in web pages.

SNOMED CT uses the UTF-8 representation of characters in terms and other text fields.

Note that SNOMED CT does not use, or require use of, the Byte Order Mark (BOM) specified by the Unicode standard because all SNOMED CT release files use UTF-8.

Summary of Unicode Encoding Rules

Character encoding

  • ASCII characters (in the range 0-127) are encoded as a single byte.

  • Greek, Hebrew, Arabic and most accented European characters are encoded as two bytes;

  • Other characters are encoded as three bytes;

  • The individual characters are encoded according to the following rules.

Single byte encoding

Characters in the range 'u+0000' to 'u+007f' are encoded as a single byte.

UTF-8 Single Byte Encoding

Two byte encoding

Characters in the range 'u+0080' to 'u+07ff' are encoded as two bytes.

Two byte encoding

Three byte encoding

Characters in the range 'u+0800' to 'u+ffff' are encoded as three bytes:

UTF-8 Three Byte Encoding

Notes on encoding rules

The first bits of each byte indicate the role of the byte. A zero bit terminates this role information. Thus possible byte values are:

UTF-8 Encoding Rules

Bits
Byte value
Role

0???????

000-127

Single byte encoding of a character

10??????

128-191

Continuation of a multi-byte encoding

110?????

192-223

First byte of a two byte character encoding

1110????

224-239

First byte of a three byte character encoding

1111???

240-255

Invalid

Example encoding

UTF-8 Encoding Example

Last updated