ASCII un Unicode: kas tie ir un kam noder

Dators saprot tikai skaitļus, tāpēc katrs burts, ko redzat ekrānā, ir kods. ASCII bija pirmā kodu tabula, kas kļuva par standartu, bet Unicode ir tā, ko mēs šodien izmantojam, lai rakstītu jebkurā valodā. Šeit redzēsiet, kā tās darbojas, kurus kodus der zināt, kāpēc garumzīmju vietā dažkārt parādās dīvaini simboli un kā visu apskatīt tabulā.

Atjaunināts:

Kas ir rakstzīmju kodējums

Kodējums ir vienošanās: „skaitlis 65 nozīmē burtu A”. Kad rakstāt tekstu, programma saglabā šos skaitļus; kad cits cilvēks to atver, viņa programma tos atkal pārvērš burtos, izmantojot to pašu vienošanos. Ja abi neizmanto vienu un to pašu tabulu, teksts iznāk nepareizs.

Jāatšķir divas idejas. Viena ir rakstzīmju kopa, saraksts, kuri skaitļi atbilst kuriem simboliem. Otra ir tas, kā šie skaitļi tiek saglabāti baitos. ASCII abas sakrīt triviāli; Unicode ne, un tur parādās UTF-8.

ASCII: 128 rakstzīmes pa 7 bitiem

ASCII (saīsinājums no American Standard Code for Information Interchange) tika standartizēts 20. gadsimta 60. gados. Tas izmanto 7 bitus, tas ir 2 pakāpē 7 = 128 kodus, no 0 līdz 127. No tiem 33 ir vadības rakstzīmes (no 0 līdz 31 un 127) un 95 ir drukājamas (no 32 līdz 126, ieskaitot atstarpi).

Tajā nav ne burtu ar garumzīmēm vai mīkstinājuma zīmēm, ne ñ, ne eiro simbola: tas tika veidots angļu valodai. Tas izskaidro, kāpēc vēlāk bija vajadzīgas citas tabulas.

Kodi, ko sastapsit visbiežāk. Atstarpe (32) skaitās drukājama, kaut gan nav redzama.
Vadības rakstzīmeDecimālaisHeksadecimālaisBinārais (7 biti)Kam tā domāta
Nulle (NUL)0000000000Vairākās valodās atzīmē virknes beigas
Horizontālā tabulācija (TAB)9090001001Pāriet uz nākamo tabulatoru
Rindas pārbīde (LF)100A0001010Pāriet uz nākamo rindu
Karetes atgriešana (CR)130D0001101Atgriežas rindas sākumā
Escape (ESC)271B0011011Sāk vadības secības
Atstarpe32200100000Pirmā drukājamā rakstzīme
Dzēšana (DEL)1277F1111111Dzēš rakstzīmi

Attiecības, kuras der atcerēties

Tabula nav sakārtota nejauši. Ar dažām likumsakarībām varat lasīt kodus no galvas.

Rindas beigas: LF, CR un CRLF

Rindas pārbīde šķiet kaut kas vienkāršs, bet atkarībā no sistēmas to raksta atšķirīgi. Unix, Linux un macOS izmanto vienu rakstzīmi, LF (10). Windows izmanto divas pēc kārtas, CR un LF (13 un 10), kas pazīstamas kā CRLF. Vecajiem teletaipiem vajadzēja divas atsevišķas komandas: atgriezt karreti sākumā un pavirzīt papīru par vienu rindu.

Šī atšķirība ir iemesls failiem, kas vienkāršā redaktorā izskatās kā viena rinda, vai ar dīvainu simbolu katras rindiņas beigās. Ja meklējat, kāds kods ir katram, ASCII tabulas meklētājā ierakstiet LF vai CR.

„Paplašinātais ASCII” nav standarts

Tā kā baitam ir 8 biti, bet ASCII izmanto tikai 7, palika 128 brīvi kodi (no 128 līdz 255), un katrs ražotājs un reģions tos aizpildīja pa savam. To sauc par „paplašināto ASCII”, taču vienas tabulas nav: to ir daudz, tās sauc par kodu lapām. Divas no zināmākajām ir Latin-1 (ISO-8859-1), kur é ir kods 233, un Windows-1252, līdzīga, bet ar atšķirībām kodos no 128 līdz 159 (tur, piemēram, ir eiro).

Problēma ir tā, ka kods 233 vienā tabulā nozīmē „é”, bet citā kaut ko citu. Teksts, kas rakstīts ar vienu tabulu un lasīts ar citu, rādīja nesaprotamas rakstzīmes. Unicode radās, lai šo juceklim pieliktu punktu.

Unicode un UTF-8

Unicode piešķir unikālu skaitli, ko sauc par koda punktu, katrai gandrīz visu pasaules rakstības sistēmu rakstzīmei, kā arī simboliem un emocijzīmēm. Šodien tajā ir vairāk nekā 150 000 rakstzīmju. To raksta ar prefiksu U+ un heksadecimālajā sistēmā: „A” ir U+0041, „ñ” ir U+00F1, eiro ir U+20AC un smaidošās sejas emocijzīme ir U+1F600. Pirmie 128 koda punkti ir tieši tādi paši kā ASCII.

UTF-8 ir visbiežāk izmantotais veids, kā šos skaitļus saglabāt baitos, un tas izmanto no 1 līdz 4 atkarībā no rakstzīmes. 128 ASCII rakstzīmes aizņem vienu baitu, tādu pašu kā vienmēr, tāpēc ASCII teksts ir arī derīgs UTF-8 teksts. Pārējās aizņem vairāk baitu.

Jo tālāk no ASCII, jo vairāk baitu rakstzīme aizņem.
RakstzīmeKoda punktsBaiti UTF-8Baiti (heksadecimālajā)
AU+0041141
éU+00E92C3 A9
ñU+00F12C3 B1
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Kāpēc „ñ” parādās „ñ” vietā

Tā ir visbiežākā kļūda, un tai ir precīzs izskaidrojums. „ñ” UTF-8 ir divi baiti: C3 un B1. Ja programma uzskata, ka teksts ir Latin-1, tā lasa katru baitu kā rakstzīmi: C3 ir „Ô un B1 ir „±”. Rezultāts: „ñ”. Tas pats notiek ar „é”, kas izskatās kā „Ã©”, un ar „canción”, kas parādās kā „canción”.

Risinājums gandrīz vienmēr ir norādīt programmai atvērt failu kā UTF-8 (teksta redaktorā vai izklājlapas importa iestatījumos). Kad notiek otrādi, Latin-1 teksts tiek lasīts kā UTF-8, parasti parādās rombi ar jautājuma zīmi, jo šie atsevišķie baiti neveido derīgas UTF-8 secības.

Kā lietot ASCII tabulu un pārveidotāju

Rīks „ASCII tabula” parāda 128 rakstzīmes ar to kodu decimālajā, heksadecimālajā, oktālajā un binārajā sistēmā un vadības rakstzīmju nosaukumu.

  1. Meklētājā ierakstiet rakstzīmi, kodu vai vadības rakstzīmes nosaukumu (piemēram, A, 65, 41 vai LF), lai atrastu tās rindu.
  2. Izmantojiet filtra pogas (Vadības, Cipari, Lielie burti, Mazie burti, Simboli), lai redzētu tikai vienu grupu.
  3. Lai pārvērstu, ierakstiet tekstu laukā „Teksts” un izvēlieties formātu (decimālais, heksadecimālais, oktālais vai binārais): zemāk parādās kodi. „Hola” dod 72 111 108 97 decimālajā un 48 6F 6C 61 heksadecimālajā.
  4. To var arī otrādi: ielīmējiet kodus, atdalītus ar atstarpēm vai komatiem, laukā „Kodi”, un teksts tiek izveidots. Heksadecimālajā tiek pieņemti prefiksi, piemēram, 0x41.

Ja tekstā ir rakstzīmes, kas nav ASCII, piemēram, ñ, rīks par to paziņo un parāda to Unicode kodu. Lai redzētu reālos baitus UTF-8, izmantojiet „Teksts uz bināro kodu”: ñ dod 11000011 10110001, divus 8 bitu baitus. Ierobežojumi: tabula rāda tikai standarta ASCII, nevis paplašināto, un viss tiek aprēķināts jūsu pārlūkprogrammā, nenosūtot tekstu nevienam serverim.

Biežāk uzdotie jautājumi

Cik rakstzīmju ir ASCII?

128, ar kodiem no 0 līdz 127 un 7 bitiem katrai. No tām 33 ir vadības un 95 ir drukājamas, ieskaitot atstarpi.

Kāds ir burta A un a ASCII kods?

„A” ir 65 (41 heksadecimālajā, 01000001 binārajā) un „a” ir 97 (61 heksadecimālajā, 01100001 binārajā). Tie vienmēr atšķiras par 32.

Kāda ir atšķirība starp ASCII un Unicode?

ASCII ir 128 rakstzīmes, kas domātas angļu valodai. Unicode ir vairāk nekā 150 000 gandrīz visu valodu rakstzīmju un emocijzīmju, un tā pirmās 128 ir tādas pašas kā ASCII.

Kas ir UTF-8?

Tas ir visbiežāk izmantotais veids, kā saglabāt Unicode tekstu baitos. Tas izmanto no 1 līdz 4 baitiem uz rakstzīmi: ASCII rakstzīmes aizņem vienu, ñ aizņem divus un emocijzīme četrus.

Kāpēc manā tekstā ir redzams „ñ” vai „é”?

Jo UTF-8 saglabāts teksts tiek lasīts kā Latin-1. Atveriet failu, norādot UTF-8 kodējumu, un tas tiks salabots.