UTF-8
English · Français · Suomi · Русский
UTF-8 (8-bit UCS/Unicode Transformation Format) is a variable-length character encoding for Unicode. Unicode characters U+0000 to U+007F are encoded simply as bytes 00h to 7Fh. This means that files and strings which contain only 7-bit ASCII characters have the same encoding under both ASCII and UTF-8.
All characters > U+007F are encoded as a sequence of several bytes, each of which has the two most significant bits set. No byte sequence of one character is contained within a longer byte sequence of another character. This allows easy search for substrings. The first byte of a multibyte sequence that represents a non-ASCII character is always in the range C0h to FDh and it indicates how many bytes follow for this character. All further bytes in a multibyte sequence are in the range 80h to BFh. This allows easy resynchronization and robustness.
| Code points | 1st byte | 2nd byte | 3rd byte | 4th byte | most significant bits of the first byte of a multi-byte sequence | |
|---|---|---|---|---|---|---|
| U+0000..U+007F | 00..7F | 0 | ASCII | |||
| U+0080..U+07FF | C2..DF | 80..BF | 110 | - UTF-8 Latin characters | ||
| U+0800..U+0FFF | E0 | A0..BF | 80..BF | 1110 | ||
| U+1000..U+FFFF | E1..EF | 80..BF | 80..BF | 1110 | - UTF-8 subscripts and superscripts | |
| U+10000..U+3FFFF | F0 | 90..BF | 80..BF | 80..BF | 11110 | |
| U+40000..U+FFFFF | F1..F3 | 80..BF | 80..BF | 80..BF | 11110 | |
| U+100000..U+10FFFF | F4 | 80..BF | 80..BF | 80..BF | 11110 |
UTF-8 byte Sequences
UTF8 functions
FreePascal
The system unit contains some basic functions:
- UnicodeToUtf8
- Utf8ToUnicode
- UTF8Encode
- UTF8Decode
- AnsiToUtf8
- Utf8ToAnsi
Lazarus
Lazarus also contains UTF8 functions. For more details see LCL Unicode Support
See also
- Dealing with directory and filenames - UTF8 functions for files
- LCL Unicode Support - UTF8 in graphical applications
- Console mode Pascal: Unicode (UTF8) output - Showing UTF8 output in console mode/text mode programs
- UTF8 strings and characters
From the Free Pascal wiki, page "UTF-8", as it stood on 2017-06-26 after a change by Djzepi, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
