Thursday, March 30, 2017

You TF, I TF, We all TF for UTF

UTF ( Unicode Text Format is a Multi-language standard for representing Unicode text. there are three ways of representing Unicode elements:  UTF-8, UTF-16, and UTF-32.



The formats for UTF-8 are:






+-+-+-+-+-+-+-+-+
|0| ASCII code  |     7 bits
+-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|1 1 0|bits 10-6| |1 0| bits 5-0  |     11 bits
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|1 1 1 0| bits  | |1 0| bits 11-6 | |1 0| bits 5-0  |     16 bits
|       | 15-12 | |   |           | |   |           |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|         | bits| |   |           | |   |           | |   |           |     21
|1 1 1 1 0| 20- | |1 0| bits 17-12| |1 0| bits 11-6 | |1 0| bits 5-0  |     bits
|         |  18 | |   |           | |   |           | |   |           |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

Note:  code points beyond 21 bits have no usage assigned

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|           bits| |   |           | |   |           | |   |           |
|1 1 1 1 1 0| 25| |1 0| bits 23-18| |1 0| bits 17-12| |1 0| bits 11-6 |
|           |-24| |   |           | |   |           | |   |           |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

     +-+-+-+-+-+-+-+-+
     |   |           |
     |1 0| bits 5-0  |     26 bits
     |   |           |
     +-+-+-+-+-+-+-+-+

For longest (31 bit) code points:
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 0| | |   |           | |   |           | |   |           |
|             bit |1 0| bits 29-24| |1 0| bits 23-18| |1 0| bits 17-12|
|             30| |   |           | |   |           | |   |           |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

     +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
     |   |           | |   |           |
     |1 0| bits 11-6 | |1 0| bits 5-0  |     31 bits
     |   |           | |   |           |
     +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

Suggested but not adopted for 32 bit values:
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1| | |   |           | |   |           | |   |           |
|             bit |1 0| bits 29-24| |1 0| bits 23-18| |1 0| bits 17-12|
|             30| |   |           | |   |           | |   |           |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

     +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
     |   |           | |   |           |
     |1 0| bits 11-6 | |1 0| bits 5-0  |     32 bits (bit 31 = 1)
     |   |           | |   |           |
     +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

The following formats are "overlong" representations and MUST be treated as
errors:

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|1 1 0 0 0 0 0| | |   |           |
|             bit |1 0| bits 5-0  |     11 bits to represent 7 or fewer bits
|             |6| |   |           |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|1 1 1 0 0 0 0 0| |1 0 0|bits 10-6| |1 0| bits 5-0  |     16 bits to represent
|               | |     |         | |   |           |     11 or fewer bits
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+    
|1 1 1 1 0 0 0 0| |1 0 0 0|  bits | |1 0| bits 11-6 | |1 0| bits 5-0  |     21 
|               | |       | 15-12 | |   |           | |   |           |     bits 
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+     to
represent 16 or fewer bits

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|1 1 1 1 1 0 0 0| |1 0 0 0 0|bits | |1 0| bits 17-12| |1 0| bits 11-6 |
|               | |         |20-18| |   |           | |   |           |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

     +-+-+-+-+-+-+-+-+
     |1 0| bits 5-0  |     26 bits to represent 21 or fewer bits
     |   |           |
     +-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|               | |           bits| |   |           | |   |           |
|1 1 1 1 1 1 0 0| |1 0 0 0 0 0| 25| |1 0| bits 23-18| |1 0| bits 17-12|
|               | |           |-24| |   |           | |   |           |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

     +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
     |   |           | |   |           |
     |1 0| bits 11-6 | |1 0| bits 5-0  |     31 bits to represent 26 or fewer
     |   |           | |   |           |     bits
     +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+




The formats for UTF-16 are:






+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 0| |1 1 1 1 1 1 1 1|     Byte Order Mark (BOM = xFEFF)
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|   bits 15-8   | |   bits 7-0    |     16 bit code points
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

Code points greater than xFFFF (65,535) are represented by subtracting x10000
(65,536) and distributing the bits of the result over 4 bytes

+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|           bits| |               | |           bits| |               |     21 bit
|1 1 0 1 1 0|19-| |   bits 17-10  | |1 1 0 1 1 1|9-8| |   bits 7-0    |     code
| xD8 - xDB |18 | |               | | xDC - xDF |   | |               |     points
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+




UTF-32 represents code points as 21 bit integers (0 - x10FFFF) in 4 bytes.





0 Comments:

Post a Comment

Please enter your comment here. Comments wil be reviewed before being published.

Subscribe to Post Comments [Atom]

<< Home