2020 m. kovo 15 d., sekmadienis

Kaip atvaizduojamas tekstas


image source *The Tech Train

A simbolis UTF-8 , koduojamas vienu bitu A:'1000001' 


$ echo "A" > failas.txt
$ ll failas.txt 
-rw-r--r-- 1 sup sup 2 kov.   15 09:05 failas.tx

Matome, kad failas užima 2 baitus bet kodėl? Įrašėme tik vieną simbolį, 'A' vieną baitą informacijos.

Toliau tikrinant galime pastebėti, kad

$ od -A o -t u1c failas.txt
0000000  65  10
          A  \n
0000002


Po 'A' simbolio, buvo įterptas naujos eilutės simbolis. Taigi `echo` komandą, automatiškai prideda '\n\' simbolį ir todėl failo dydis 2baitai. Panaudokime specialią `echo` vėlėvėlę

-n     do not output the trailing newline

$ echo -n "A" > failas.txt 
1 ✗ sup /tmp $ od -A o -t cd failas.txt
0000000   A
                     65
0000001


$ ls -la failas.txt 
-rw-r--r-- 1 sup sup 1 kov.   15 09:10 failas.txt


Pirmieji baitai nurodo kokio ilgio bus bitas.

0xxxxxxx - vienas bitas (maximali reikšmė 127 = 64+32+16+8+4+2+1)
110xxxxx 10xxxxx - du baitai (max reikšmė 16191)
...

(Source: https://en.wikipedia.org/wiki/UTF-8)


Tam kad naršyklėse tekstas butų teisingai atvaizduotas, reikia nustatytų žymę:
<meta charset="UTF-8">