Unicode & Encoding Inspector

[ NAKIKITANG KARAKTER ]
29
May dapat tingnan sa ibaba
Code point29
UTF-16 unit29
UTF-8 byte38
[ ANO ANG TINGNAN ]
Hindi nakikita1 · U+200B

Invisible characters. They render as nothing, so the text LOOKS correct and compares unequal. A zero-width space in a password field or a BOM at the front of a CSV are the usual causes of “but it looks identical”.

Kakaibang espasyo1 · U+00A0

Spaces that are not the ordinary U+0020. Almost always pasted from a word processor or a web page. They survive a trim() that only strips ASCII whitespace, and they break a split on " ".

Smart na bantas3 · U+2014 U+201C U+201D

Typographic punctuation substituted by a word processor — curly quotes, en and em dashes, a single-character ellipsis. Fine in prose, and a syntax error in code, a CSV or a JSON string.

[ KARAKTER SA KARAKTER ]
JU+004ABasic Latin1B
uU+0075Basic Latin1B
aU+0061Basic Latin1B
nU+006EBasic Latin1B
 U+00A0NO-BREAK SPACE2B
DU+0044Basic Latin1B
eU+0065Basic Latin1B
lU+006CBasic Latin1B
aU+0061Basic Latin1B
U+0020SPACE1B
CU+0043Basic Latin1B
rU+0072Basic Latin1B
uU+0075Basic Latin1B
zU+007ABasic Latin1B
U+0020SPACE1B
U+2014EM DASH3B
U+0020SPACE1B
U+201CLEFT DOUBLE QUOTATION MARK3B
dU+0064Basic Latin1B
eU+0065Basic Latin1B
vU+0076Basic Latin1B
eU+0065Basic Latin1B
lU+006CBasic Latin1B
oU+006FBasic Latin1B
pU+0070Basic Latin1B
eU+0065Basic Latin1B
rU+0072Basic Latin1B
U+201DRIGHT DOUBLE QUOTATION MARK3B
·U+200BZERO WIDTH SPACE3B
38 bytes in UTF-8. A VARCHAR limit and an HTTP header limit count BYTES, not characters, which is why a name with an ñ can be rejected by a field that looks long enough.
[ ANO ITO ]

May apat na sagot sa tanong na “gaano katagal ito”, at magkakaiba silang lahat.

Ang "👨‍👩‍👧" ay 8 sa .length ng JavaScript, 5 na code point, 18 byte sa UTF-8, at 1 karakter sa taong nag-type nito.

Byte ang sinusukat ng VARCHAR(20). UTF-16 unit ang binibilang ng form validator. Ang gumagamit ay binibilang ang nakikita niya. Pumili ka ng isa at tawagin mong “haba”, at may pangalang tatanggihan ng field na mukhang sapat naman.

At may mga karakter na hindi lumalabas kahit nandiyan. Zero-width space sa password. BOM sa unahan ng CSV kaya sira ang unang pamagat ng hanay. Non-breaking space na galing sa Word. Tama ang tingin sa teksto at hindi pantay sa paghahambing.

Hiwalay ang mga control ng direksyon dito. Hindi lang sila hindi lumalabas — binabaligtad nila ang pagkakasunod ng teksto sa paligid nila, kaya maaaring iba ang nababasa at iba ang tumatakbo.

[ MGA TANONG ]

Bakit may apat na magkaibang haba?

Dahil apat na magkaibang bagay ang sumusukat sa "haba". Ang VARCHAR na column at ang HTTP header ay bumibilang ng BYTE. Ang .length ng JavaScript ay bumibilang ng UTF-16 unit. Ang hangganan ng karakter sa form ay karaniwang code point. At ang taong nagtitipa ay binibilang ang nakikita niya. Para sa "👨‍👩‍👧" ay 18, 8, 5 at 1 iyon. Ang pagpili ng isa at pagtawag ditong haba ang dahilan kung bakit may pangalang tinatanggihan ng patlang na mukhang sapat naman ang haba.

Magkamukha ang dalawang string ko pero hindi pantay sa paghahambing. Bakit?

Karaniwan ay isa sa tatlong bagay, at natatagpuan silang lahat nito. Isang hindi nakikitang karakter — zero-width space, soft hyphen, BOM sa unahan ng file. Isang espasyong hindi U+0020, kadalasang non-breaking space na galing sa word processor. O ibang anyo ng normalisasyon: ang "é" ay puwedeng isa o dalawang code point, at magkamukha ang dalawa sa mata at hindi pantay sa paghahambing sa halos bawat wika.

Ano ang mga control ng direksiyon at bakit sila hiwalay?

Binabaligtad nila ang pagkakasunod ng tekstong nasa paligid nila. Iba ang uri nila sa karakter na basta hindi lumalabas: ang linya ng source code na may U+202E ay puwedeng basahin sa isang paraan at tumakbo sa iba, at iyon ang uri ng pag-atakeng Trojan Source. May sarili silang natuklasan, mas mataas sa lahat maliban sa sirang teksto, sa halip na nakalista katabi ng isang smart quote.

Ano ang dapat kong gawin sa karakter na minarkahan nito?

Depende sa gamit ng teksto. Tama ang smart quote sa sulatin at syntax error sa JSON o CSV. Sinasadya ang non-breaking space sa "10 kg" at bug ito sa key ng database. Ganap na wasto ang astral na karakter at problema lang ito kung may humihiwa ayon sa .length sa dulo ng daloy. Pinapangalanan ng tool kung ano ang nandoon at bakit ito mahalaga; nasa iyo ang pasya kung nararapat ito.

Bakit may mga karakter na pangalan ng block ang nakukuha sa halip na tunay na pangalan?

Dahil megabyte ang buong Unicode character database at walang anumang dependency na kasama ang engine na ito. Ang bawat karakter na sulit bigyan ng babala ay eksaktong pinapangalanan. Ang lahat ng iba ay kinikilala sa pamamagitan ng Unicode block nito, na makatotohanan at maikli. Ang paggawa-gawa ng pangalang mukhang tama ay mas masama kaysa sa isang tapat.

Ano ang NFC at dapat ba akong mag-normalise?

Ang NFC ay ang pinagsanib na anyo ng normalisasyon, at iyon ang default ng web. Kung naghahambing ka ng string, ginagamit sila bilang key, o itinatago para sa pagsusuri ng pagkakaisa, mag-normalise muna — kung hindi ay tatanggapin ang dalawang magkamukhang halaga at hindi kailanman tatakbo ang pagsusuri mo sa doble. Lumalabas lang ang pindutan kapag wala pa sa NFC ang teksto.

[ ANG KOMPUTASYON ]
Apat na sukat ng iisang teksto
Nakikitang karakter1
Code point5
UTF-16 unit (.length)8
UTF-8 byte18
Iisang emoji ng pamilya, apat na magkakaibang bilang. Ang bawat isa ay tama para sa ibang tanong.
[ SUSUNOD ]
51Bilang ng Salita at KarakterCounts for ordinary text
55Pang-redact ng TekstoTake things out of it
42Base64 Encoder / DecoderThe other encoding question
[ MAHALAGA ]

Runs entirely in your browser; nothing is transmitted. Full Unicode names are not shipped — every character worth warning about is named exactly, and the rest are identified by block rather than guessed at. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.