Mitä ovat näkymättömät merkit?

Näkymättömät merkit ovat Unicode-koodipisteitä, joilla ei ole näkyvää glyfiiä, mutta jotka silti vievät tilaa merkkijonossa ja vaikuttavat siihen, kuinka ohjelmisto käsittelee tai renderöi tekstiä. Niihin kuuluvat ohjausmerkit (kuten sarkain ja rivinvaihto), muotoilumerkit (kuten nollaleveyden liittimet ja suuntamerkit), erilaiset välilyönnin variantit ja erikoismerkit kuten tavujärjestysmerkkö (BOM). Koska ne näyttävät tyhjältä, ne ovat erittäin vaikeita havaita tavallisessa tekstieditorissa ja ovat yleinen lähde hienovaraisille virheille, rikkoutuneille asetteluille ja tietojen käsittelyvirheille.

Työkalun kuvaus

Invisible Characters Viewer on interaktiivinen tekstieditori, joka renderöi jokaisen näkymättömän merkin näkyvänä symbolina paikalleen. Liitä tai kirjoita mitä tahansa tekstiä ja jokainen piilotettu merkki korvataan välittömästi pienellä symbolisella glyfillä — sarkaimet näkyvät muodossa , välilyönnit muodossa ·, nollaleveyden välilyönnit muodossa ·, suuntamerkit muodossa / , BOM muodossa ja niin edelleen. Kun viet hiiren minkä tahansa glyfiinin päälle, näkyviin tulee työkaluvihje, jossa näkyy merkin täydellinen nimi ja Unicode-koodipiste. Mikään ei poistu editorista; kaikki renderöinti tapahtuu paikallisesti selaimessasi.

Esimerkit

Syöteteksti (raa'a) Mitä näet viewerissa
Hello\u200BWorld (nollaleveyden välilyönti sanojen välissä) Hello·World ja ·-glyfii merkitsee U+200B:tä
\u202Eright-to-left override →right-to-left override ja suuntamerkki alussa
line one\r\nline two Rivinpalautus- ja rivinvaihtoglyfii ennen rivinvaihtoa
\uFEFFstart of file ▯start of file näyttää BOM:in kohdassa 0

Ominaisuudet

  • Sisäinen renderöinti: Näkymättömät merkit näytetään glyfeinä suoraan editorissa erillisen paneelin sijaan, joten näet ne kontekstissa ympäröivän tekstin kanssa
  • Laaja merkkien kattavuus: Käsittelee C0- ja C1-ohjausmerkkejä, kaikkia nimettyjä Unicode-muotoilumerkkejä, Unicode-välilyönnin variantteja (en-välilyönti, em-välilyönti, hiusvälilyönti, kapea sitomaton välilyönti jne.), suuntamuotoilumerkkejä, variaatioselektoreita, tunnisteiden merkkejä ja BOM:ia
  • Työkaluvihjeet: Kun viet hiiren glyfiinin päälle, näkyviin tulee merkin täydellinen Unicode-nimi ja koodipiste (esim. Zero Width Space — U+200B)
  • Tavallisen välilyönnin korostus: Tavalliset välilyönnit ja sarkaimet korostetaan CodeMirrorin sisäänrakennettujen välilyönnin merkitsijöiden avulla, jolloin ne pysyvät visuaalisesti erilaisina tavallisesta tekstistä
  • Tavallisen tekstin tila: Editori pysyy tavallisen tekstin tilassa, joten erikoismerkkejä ei koskaan tulkita uudelleen tai muokata kirjoitettaessa

Käyttötapaukset

  • Kopioi-liitä-artefaktien virheenetsintä: Tekstistä, joka on kopioitu PDF-tiedostoista, verkkosivuilta tai tekstinkäsittelyohjelmista, löytyy usein nollaleveyden välilyöntejä, pehmeitä tavuviivoja tai sitomattomia välilyöntejä, jotka aiheuttavat ristiriitoja merkkijonojen vertailuissa ja hakutuloksissa
  • Tiedostojen tarkastelu: Liitä CSV-, JSON- tai lokitulosteet paikantaaksesi odottamattomat ohjausmerkit (nollatavut, rivinpalautukset, BOM) ennen tietojen tuomista tietokantaan tai jäsentimeen
  • Verkon ja koodin virheenetsintä: Tarkista käyttäjän toimittama syöte tai API-vastaukset piilotettujen suuntamerkkien tai muotoilumerkkien varalta, jotka saattavat rikkoa renderöinnin tai aiheuttaa tietoturvaongelmia

Kuinka se toimii

Työkalu käyttää CodeMirror 6:ta mukautetulla laajennuksella, joka käy läpi jokaisen merkin editorin näkyvällä näyttöalueella. Jokaista koodipistettä varten se tarkistaa tunnettujen näkymättömien merkkien hakutaulukon, testaa Unicode-ominaisuusluokkia \p{Cc} (ohjaus) ja \p{Cf} (muotoilu) vastaan ja havaitsee variaatioselektorit ja tunnisteiden merkkialueet. Vastaavat merkit korvataan sisäisillä koristeluviidgeilla, jotka näyttävät vastaavan symbolin glyfiinin. Tavalliset välilyönnit ja sarkaimet delegoidaan CodeMirrorin sisäänrakennetulle highlightWhitespace-laajennukselle.