ASCII at Unicode: ano ang mga ito at para saan

Numero lang ang naiintindihan ng computer, kaya ang bawat letrang nakikita mo sa screen ay isang code. Ang ASCII ang unang talaan ng mga code na naging pamantayan at ang Unicode ang ginagamit natin ngayon para magsulat sa anumang wika. Dito mo makikita kung paano gumagana ang mga ito, anong mga code ang dapat malaman, bakit minsan may lumalabas na kakaibang simbolo sa halip na asento at paano ikonsulta ang lahat sa talaan.

In-update noong:

Ano ang character encoding

Ang encoding ay isang kasunduan: «ang numerong 65 ay nangangahulugang letrang A». Kapag nagsulat ka ng teksto, sine-save ng program ang mga numerong iyon; kapag binuksan ito ng ibang tao, isinasalin ulit ito ng program niya sa mga letra gamit ang parehong kasunduan. Kung hindi magkapareho ang talaang ginagamit ng dalawa, mali ang lalabas na teksto.

Dapat paghiwalayin ang dalawang ideya. Ang isa ay ang character set, ang listahan kung aling numero ang tumutugma sa aling simbolo. Ang isa pa ay kung paano sine-save ang mga numerong iyon sa mga byte. Sa ASCII, magkasabay ang dalawa sa simpleng paraan; sa Unicode, hindi, at doon pumapasok ang UTF-8.

ASCII: 128 character na 7 bits

Ang ASCII (acronym ng American Standard Code for Information Interchange) ay naging pamantayan noong dekada 1960. Gumagamit ito ng 7 bits, ibig sabihin 2 itinaas sa 7 = 128 code, mula 0 hanggang 127. Sa mga ito, 33 ay control character (mula 0 hanggang 31 at ang 127) at 95 ay maipi-print (mula 32 hanggang 126, kasama ang espasyo).

Walang kasamang letrang may asento, ni ang ñ, ni ang simbolo ng euro: ginawa ito para sa Ingles. Iyan ang dahilan kung bakit kinailangan ng ibang mga talaan pagkatapos.

Ang mga code na pinakamadalas mong makikita. Maipi-print ang espasyo (32) kahit hindi ito nakikita.
Control characterDecimalHexadecimalBinary (7 bits)Para saan
Null (NUL)0000000000Nagmamarka ng dulo ng string sa ilang wika
Horizontal tab (TAB)9090001001Lumalaktaw sa susunod na tab stop
Line feed (LF)100A0001010Bumababa sa susunod na linya
Carriage return (CR)130D0001101Bumabalik sa simula ng linya
Escape (ESC)271B0011011Nagsisimula ng mga control sequence
Espasyo32200100000Unang maipi-print na character
Delete (DEL)1277F1111111Nagbubura ng character

Mga ugnayang dapat tandaan

Hindi basta-basta ang pagkakaayos ng talaan. Sa ilang pattern lang, mababasa mo ang mga code nang kabisado.

Dulo ng linya: LF, CR at CRLF

Mukhang simple ang line break, pero iba-iba ang pagsusulat nito depende sa system. Isang character lang, ang LF (10), ang gamit ng Unix, Linux at macOS. Dalawang magkasunod, CR at LF (13 at 10), na kilala bilang CRLF, ang gamit ng Windows. Kailangan ng dalawang magkaibang utos ng mga lumang teletype: ibalik ang carriage sa simula at isulong ang papel nang isang linya.

Iyang pagkakaiba ang sanhi ng mga file na nakikitang nasa iisang linya lahat sa basic na editor, o may kakaibang simbolo sa dulo ng bawat hilera. Kung gusto mong malaman kung anong code ang bawat isa, isulat ang LF o CR sa paghahanap ng ASCII Table.

Hindi pamantayan ang «extended ASCII»

Dahil may 8 bits ang isang byte at 7 lang ang gamit ng ASCII, may natirang 128 libreng code (mula 128 hanggang 255) at pinunan ito ng bawat manufacturer at rehiyon sa sarili nilang paraan. Kilala ito bilang «extended ASCII», pero walang iisang talaan: marami, na tinatawag na code page. Dalawa sa pinakakilala ang Latin-1 (ISO-8859-1), kung saan ang é ay code 233, at Windows-1252, na katulad pero may mga pagkakaiba sa mga code 128 hanggang 159 (naroon, halimbawa, ang euro).

Ang problema ay ang code 233 ay nangangahulugang «é» sa isang talaan at ibang bagay sa iba. Ang tekstong isinulat sa isang talaan at binasa sa iba ay nagpapakita ng basura. Isinilang ang Unicode para tapusin ang kaguluhang iyon.

Unicode at UTF-8

Nagtatalaga ang Unicode ng natatanging numero, na tinatawag na code point, sa bawat character ng halos lahat ng sistema ng pagsulat sa mundo, kasama ang mga simbolo at emoji. Mahigit 150,000 character na ang laman nito ngayon. Isinusulat ito na may unlaping U+ at sa hexadecimal: ang «A» ay U+0041, ang «ñ» ay U+00F1, ang euro ay U+20AC at ang emoji ng nakangiting mukha ay U+1F600. Ang unang 128 code point ay eksaktong kapareho ng ASCII.

Ang UTF-8 ang pinakamadalas gamiting paraan ng pag-save ng mga numerong iyon sa mga byte, at gumagamit ito ng 1 hanggang 4 depende sa character. Ang 128 ng ASCII ay tig-isang byte na kapareho ng dati, kaya ang tekstong ASCII ay balidong tekstong UTF-8 din. Mas maraming byte ang kinukuha ng iba.

Habang lumalayo sa ASCII, mas maraming byte ang kinukuha ng character.
CharacterCode pointMga byte sa UTF-8Mga byte (hexadecimal)
AU+0041141
éU+00E92C3 A9
ñU+00F12C3 B1
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Bakit lumalabas ang «Ã±» sa halip na «ñ»

Ito ang pinakakaraniwang error at may eksaktong paliwanag. Ang ñ sa UTF-8 ay dalawang byte: C3 at B1. Kung inaakala ng program na nasa Latin-1 ang teksto, binabasa nito ang bawat byte bilang character: ang C3 ay «Ã» at ang B1 ay «±». Resulta: «Ã±». Ganoon din ang «é», na nakikitang «Ã©», at ang «canción», na lumalabas na «canción».

Halos laging ang solusyon ay sabihin sa program na buksan ang file bilang UTF-8 (sa text editor o sa settings ng pag-import ng spreadsheet). Kapag kabaligtaran ang nangyari, tekstong Latin-1 na binasa bilang UTF-8, kadalasang lumalabas ang mga diamond na may tandang pananong, dahil hindi bumubuo ng balidong UTF-8 sequence ang mga nag-iisang byte na iyon.

Paano gamitin ang ASCII Table at ang converter

Ipinapakita ng tool na «ASCII Table» ang 128 character na may code nila sa decimal, hexadecimal, octal at binary, at ang pangalan ng mga control.

  1. Magsulat sa «Maghanap ng karakter o code» ng character, code o pangalan ng control (halimbawa A, 65, 41 o LF) para mahanap ang hilera nito.
  2. Gamitin ang mga button ng filter (Control, Mga digit, Uppercase, Lowercase, Mga simbolo) para makita ang isang grupo lang.
  3. Para mag-convert, magsulat ng teksto sa «Text» at piliin ang format (decimal, hexadecimal, octal o binary): lilitaw sa ibaba ang mga code. Ang «Hola» ay 72 111 108 97 sa decimal at 48 6F 6C 61 sa hexadecimal.
  4. Puwede mo ring gawin nang kabaligtaran: i-paste ang mga code na pinaghihiwalay ng espasyo o kuwit sa «Mga code» at mabubuo ang teksto. Sa hexadecimal, tinatanggap ang mga unlapi tulad ng 0x41.

Kung may mga character na hindi ASCII ang teksto, tulad ng ñ, ipinaaalam ito ng tool at ipinapakita ang Unicode code nito. Para makita ang totoong mga byte sa UTF-8, gamitin ang «Text to binary»: ang ñ ay 11000011 10110001, dalawang byte na tig-8 bits. Mga limitasyon: karaniwang ASCII lang ang ipinapakita ng talaan, hindi ang extended, at lahat ay kinakalkula sa browser mo nang hindi ipinapadala ang teksto sa anumang server.

Mga madalas itanong

Ilang character ang laman ng ASCII?

128, na may mga code mula 0 hanggang 127 at 7 bits bawat isa. Sa mga ito, 33 ay control at 95 ay maipi-print, kasama ang espasyo.

Ano ang ASCII code ng letrang A at ng a?

Ang «A» ay 65 (41 sa hexadecimal, 01000001 sa binary) at ang «a» ay 97 (61 sa hexadecimal, 01100001 sa binary). Laging 32 ang pagkakaiba nila.

Ano ang pagkakaiba ng ASCII at Unicode?

May 128 character ang ASCII na ginawa para sa Ingles. Mahigit 150,000 ang sa Unicode, mula sa halos lahat ng wika at emoji, at ang unang 128 nito ay kapareho ng sa ASCII.

Ano ang UTF-8?

Ito ang pinakamadalas gamiting paraan ng pag-save ng tekstong Unicode sa mga byte. Gumagamit ito ng 1 hanggang 4 na byte bawat character: isa ang sa ASCII, dalawa ang sa ñ at apat ang sa emoji.

Bakit «Ã±» o «Ã©» ang ipinapakita ng teksto ko?

Dahil ang tekstong naka-save sa UTF-8 ay binabasa bilang Latin-1. Buksan ang file at piliin ang encoding na UTF-8 at maaayos ito.