<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>printfdebugging - unicode</title>
    <subtitle>Sahil Gautam&#x27;s Blog</subtitle>
    <link rel="self" type="application/atom+xml" href="https://printfdebugging.in/tags/unicode/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://printfdebugging.in/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-08-01T00:00:00+00:00</updated>
    <id>https://printfdebugging.in/tags/unicode/atom.xml</id>
    <entry xml:lang="en">
        <title>Unicode - A character is not a char!</title>
        <published>2026-08-01T00:00:00+00:00</published>
        <updated>2026-08-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://printfdebugging.in/TextEditor/0003-unicode/"/>
        <id>https://printfdebugging.in/TextEditor/0003-unicode/</id>
        
        <content type="html" xml:base="https://printfdebugging.in/TextEditor/0003-unicode/">&lt;h1 id=&quot;unicode&quot;&gt;Unicode&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;a-character-is-not-a-char&quot;&gt;A character is not a char...&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;... unless you just write english.&lt;&#x2F;li&gt;
&lt;li&gt;ASCII covers all the &lt;strong&gt;latin english&lt;&#x2F;strong&gt; characters and that at most takes 1 byte (7 bits to be precise).&lt;&#x2F;li&gt;
&lt;li&gt;If we also include the 8th bit, then we can represent another 127 characters.&lt;&#x2F;li&gt;
&lt;li&gt;We &lt;em&gt;can&#x27;t represent all the characters from all the languages using one byte&lt;&#x2F;em&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;codepoint&quot;&gt;Codepoint&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;We can use an integer instead, it has 32 bits (4 bytes).&lt;&#x2F;li&gt;
&lt;li&gt;With that, we can assign a unique number to each character from all the languages and still have plenty left.&lt;&#x2F;li&gt;
&lt;li&gt;This integer is called a unicode &lt;code&gt;codepoint&lt;&#x2F;code&gt;, &lt;em&gt;a unique number used to identify a character&lt;&#x2F;em&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;unicode-transformation-format-8-utf-8&quot;&gt;Unicode Transformation Format 8 (UTF-8)&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;We can write these codepoints to a file and we are done! Hold on..&lt;&#x2F;li&gt;
&lt;li&gt;ASCII characters only need 1 byte, using 4 bytes for that would mean 3 wasted bytes&lt;&#x2F;li&gt;
&lt;li&gt;Because of these LLMs, ssd prices have trippled, storage isn&#x27;t cheap anymore!&lt;&#x2F;li&gt;
&lt;li&gt;So we can&#x27;t write the characters as 4 byte sequences to the file, what should we do then?&lt;&#x2F;li&gt;
&lt;li&gt;Codepoints are just &lt;em&gt;positive integers&lt;&#x2F;em&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;All the codepoints from 0 to 127 can be represented by 1 byte, 8th bit is used to flag a 1 byte long codepoint.&lt;&#x2F;li&gt;
&lt;li&gt;Similarly all the codepoints can be encoded with varying number of bytes &amp;amp; we can use some  bits to say how many.&lt;&#x2F;li&gt;
&lt;li&gt;There are other UTF encoding schemes (UTF-16, UTF-32) which use 2 &amp;amp; 4 bytes at least to represent a codepoint resp.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#ABB2BF, #ABB2BF); background-color: light-dark(#282C34, #282C34);&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7F848E, #7F848E);font-style: italic;&quot;&gt;&#x2F;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#7F848E, #7F848E);font-style: italic;&quot;&gt; source: https:&#x2F;&#x2F;www.unicode.org&#x2F;versions&#x2F;Unicode17.0.0&#x2F;core-spec&#x2F;chapter-3&#x2F;#G27506 &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#7F848E, #7F848E);font-style: italic;&quot;&gt;*&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;        1&lt;&#x2F;span&gt;&lt;span&gt; byte                &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt; bytes                      &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;3&lt;&#x2F;span&gt;&lt;span&gt; bytes                             &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt; bytes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;000&lt;&#x2F;span&gt;&lt;span&gt; .. U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;07&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;F&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                          U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;0080&lt;&#x2F;span&gt;&lt;span&gt; .. U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt;07FF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                         U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;0800&lt;&#x2F;span&gt;&lt;span&gt; .. U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt;0FFF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                         U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;1000&lt;&#x2F;span&gt;&lt;span&gt; .. U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;CFFF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                         U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;D000 .. U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;D7FF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                         U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;E000 .. U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;FFFF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                                                         U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;10000&lt;&#x2F;span&gt;&lt;span&gt;  .. U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt;3FFFF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                                                         U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;40000&lt;&#x2F;span&gt;&lt;span&gt;  .. U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;FFFFF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                                                         U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;100000&lt;&#x2F;span&gt;&lt;span&gt; .. U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt;10FFFF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;utf-8-encoding-decoding&quot;&gt;UTF-8 Encoding&#x2F;Decoding&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;This &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.rfc-editor.org&#x2F;info&#x2F;rfc3629&quot;&gt;RFC document&lt;&#x2F;a&gt; shows how codepoints are encoded with UTF-8.&lt;&#x2F;li&gt;
&lt;li&gt;Notice how the first few bits on each encoded byte are marked.&lt;&#x2F;li&gt;
&lt;li&gt;If the first byte of the sequence starts with &lt;code&gt;0&lt;&#x2F;code&gt;, we can read the next 7 bits to find the codepoint&lt;&#x2F;li&gt;
&lt;li&gt;If it&#x27;s marked with &lt;code&gt;110&lt;&#x2F;code&gt;, &lt;code&gt;1110&lt;&#x2F;code&gt; or &lt;code&gt;11110&lt;&#x2F;code&gt;, we need to read the next 1,2,3 bytes resp to decode the codepoint.&lt;&#x2F;li&gt;
&lt;li&gt;Once we read all the bytes, we can put those &lt;code&gt;x&lt;&#x2F;code&gt; bits into an integer from left to right.&lt;&#x2F;li&gt;
&lt;li&gt;The resulting number (max 21 bits) would be our codepoint.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#ABB2BF, #ABB2BF); background-color: light-dark(#282C34, #282C34);&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7F848E, #7F848E);font-style: italic;&quot;&gt;&#x2F;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#7F848E, #7F848E);font-style: italic;&quot;&gt; source: https:&#x2F;&#x2F;www.rfc-editor.org&#x2F;info&#x2F;rfc3629&#x2F;#ref-UNICODE &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#7F848E, #7F848E);font-style: italic;&quot;&gt;*&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Char. number range  &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span&gt;        UTF&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt; octet sequence&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   (&lt;&#x2F;span&gt;&lt;span&gt;hexadecimal&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;    |&lt;&#x2F;span&gt;&lt;span&gt;              (&lt;&#x2F;span&gt;&lt;span&gt;binary&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;000&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;000&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;000&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;07&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;F&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 0xxxxxxx&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;000&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt; 0080&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;000&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 07FF&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 110xxxxx&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 10xxxxxx&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;000&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt; 0800&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;000&lt;&#x2F;span&gt;&lt;span&gt; FFFF &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 1110xxxx&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 10xxxxxx&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 10xxxxxx&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;001&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;000&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;010&lt;&#x2F;span&gt;&lt;span&gt; FFFF &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 11110xxx&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 10xxxxxx&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 10xxxxxx&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#FFFFFF, #FFFFFF);&quot;&gt; 10xxxxxx&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Encoding is quite simple, we repeat the decoding steps in reverse&lt;&#x2F;li&gt;
&lt;li&gt;Use the codepoint to find out how many bytes it will take to encode it, see the numberline above.&lt;&#x2F;li&gt;
&lt;li&gt;Then starting from left to right, start filling in those &lt;code&gt;x&lt;&#x2F;code&gt;s, see the table in the decoding section.&lt;&#x2F;li&gt;
&lt;li&gt;See the example below... you can read it in reverse for decoding.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#ABB2BF, #ABB2BF); background-color: light-dark(#282C34, #282C34);&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;character  &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#98C379, #98C379);&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#98C379, #98C379);&quot;&gt;世&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#98C379, #98C379);&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;codepoint  &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; U&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;E&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;16&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;encodedLen &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt; 3&lt;&#x2F;span&gt;&lt;span&gt; bytes&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#7F848E, #7F848E);font-style: italic;&quot;&gt; &#x2F;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#7F848E, #7F848E);font-style: italic;&quot;&gt; U+0800 &amp;lt;= 0x4E16 &amp;lt;= U+FFFF &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#7F848E, #7F848E);font-style: italic;&quot;&gt;*&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;binary  &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#98C379, #98C379);&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#98C379, #98C379);&quot;&gt;0b100111000010110&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#98C379, #98C379);&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;binary  &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#98C379, #98C379);&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#98C379, #98C379);&quot;&gt;     100        111000        010110&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#98C379, #98C379);&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pattern &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt; 1110&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span&gt;xxxx     &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span&gt;xxxxxx     &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span&gt;xxxxxx&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;encoded &lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt; 1110&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;100&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;     10&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;111000&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;     10&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#E06C75, #E06C75);&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;10110&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;--&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;UTF&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;   =&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#C678DD, #C678DD);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;  11100100&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;      10111000&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#D19A66, #D19A66);&quot;&gt;      10010110&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h1 id=&quot;unicode-library&quot;&gt;Unicode Library&lt;&#x2F;h1&gt;
&lt;ul&gt;
&lt;li&gt;I wrote a simple library for UTF-8 encoding&#x2F;decoding, it lives on github, at &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;printfdebugging&#x2F;unicode&quot;&gt;printfdebugging&#x2F;unicode&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;It has a ton of tests for encoding-decoding roundtrip integrity testing &amp;amp; for checking invalid byte sequences.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
</feed>
