Unicode & Encoding Inspector

Developer

Bawat karakter, bawat haba, at ang mga hindi nakikitang sumisira.

Nakikitang karakter
29
May dapat tingnan sa ibaba
Code point
29
UTF-16 unit
29
UTF-8 byte
38
Ano ang tingnan
Hindi nakikita1 · U+200B

Mga hindi nakikitang karakter. Wala silang ipinapakita, kaya MUKHANG tama ang teksto pero hindi ito tumutugma kapag inihambing. Ang zero-width space sa password field o ang BOM sa unahan ng CSV ang karaniwang sanhi ng “pero mukha namang pareho”.

Kakaibang espasyo1 · U+00A0

Mga espasyong hindi ang ordinaryong U+0020. Halos laging na-paste mula sa word processor o web page. Nakakalusot ang mga ito sa trim() na ASCII whitespace lang ang tinatanggal, at sinisira nila ang split sa " ".

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

Typographic na bantas na ipinalit ng word processor — curly quotes, en at em dash, ellipsis na iisang karakter. Ayos sa prosa, pero syntax error sa code, CSV o 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 sa UTF-8. BYTES ang binibilang ng limitasyon ng VARCHAR at ng HTTP header, hindi karakter — kaya puwedeng tanggihan ang pangalang may ñ ng field na mukhang sapat ang haba.

Paano gamitin

Para saan ito

Hanapin ang mga nakatagong karakter sa isang teksto — hindi nakikitang espasyo, curly quote, kakaibang gitling — kapag tinatanggihan ito ng form o hindi nagtutugma ang dalawang kopyang mukhang magkapareho.

Bago magsimula

Ihanda ang tekstong may problema, kinopya mula sa pinanggalingan nito — Word, PDF, chat app. Sa browser mo ito sinusuri at walang ipinapadala kahit saan.

  1. Alisin ang sample

    Pindutin ang Burahin para alisin ang sample sa kahon.

  2. I-paste ang teksto mo

    I-paste ito sa Teksto. I-paste, huwag i-type ulit: kapag tinype mo ulit, mawawala ang mismong mga karakter na hinahanap mo.

  3. Suriin

    Pindutin ang Suriin. Nag-a-update rin ang mga bilang sa itaas habang nagpe-paste o nagta-type ka.

  4. Basahin ang nakita nito

    Pinangangalanan ng Ano ang tingnan ang bawat klase ng problema, kung ilan, at ang code nila, gaya ng U+200B. Sa Karakter sa karakter, nakalista nang sunod-sunod ang bawat karakter; tuldok ang lumalabas sa nakatago, para makita mo kung nasaan ito.

  5. Ayusin ang mga letrang may tuldik, kung inaalok

    Kung lumabas ang button na Gawing NFC, may mga letrang may tuldik na kakaiba ang pagkakaimbak. Pindutin ito para isulat ang mga ito sa karaniwang anyo, para magtugma ang dalawang kopya ng iisang salita.

Pagbasa ng resulta

  • Nakikitang karakter: ang bilang ng karakter na talagang nakikita mo. Sinasabi ng linya sa ilalim nito na Walang natagpuang kakaiba, o na may dapat tingnan.
  • Code point, UTF-16 unit at UTF-8 byte: tatlong iba pang paraan ng pagbilang ng haba ng computer. Puwedeng tanggihan ng field na may limit sa byte ang tekstong mukhang sapat ang ikli, dahil higit sa isang byte ang letrang gaya ng ñ.
  • Hindi nakikita, Kakaibang espasyo, Smart na bantas at iba pa: ang mga klase ng karakter na nakita. Ayos ang curly quotes sa liham pero sinisira nito ang code, CSV o JSON.

Kung may problema

  • Mukhang magkapareho ang dalawang teksto pero hindi nagtutugma: i-paste dito ang bawat isa nang salitan at ihambing ang nakikita ng Ano ang tingnan. Karaniwang sanhi ang Hindi nakikita na karakter o Kakaibang espasyo.
  • Para alisin ang na-flag na karakter, hanapin ito sa Karakter sa karakter, saka burahin sa sarili mong kopya, o i-type ulit ang bahaging iyon.
  • Binabago ng mga karakter na Control ng direksyon ang ayos ng pagpapakita ng teksto, kaya puwedeng iba ang basa nito sa totoong laman. Alisin ang mga ito maliban kung alam mo kung bakit nandoon.

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.

Ituloy pa

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.