Mikä on merkkijonon pituus?

Merkkijonon pituus riippuu siitä, mitä lasketaan. Ihminen näkee merkkejä, mutta ohjelmat laskevat koodipisteitä, UTF-16-koodiyksiköitä tai tavuja, ja nämä määrät eroavat usein toisistaan. Emoji 👍🏽 näyttää yhdeltä merkiltä, mutta se koostuu kahdesta koodipisteestä, neljästä UTF-16-koodiyksiköstä ja kahdeksasta UTF-8-tavusta. JavaScript, Java ja C# ilmoittavat pituudeksi UTF-16-koodiyksiköiden määrän, tietokannat rajoittavat usein tavujen määrää, ja lomakekentät saattavat laskea rivinvaihdot kahdeksi merkiksi.

Työkalun kuvaus

Tämä työkalu näyttää merkkijonon pituuden samanaikaisesti neljänä yksikkönä ja tarkistaa sen valinnaista vähimmäis- ja enimmäispituutta vastaan. Sen avulla voit selvittää, mahtuuko käyttäjänimi, otsikko tai tietokannan arvo asetettuun rajaan, tai miksi kaksi ohjelmaa ilmoittaa saman tekstin eri pituiseksi. Jos merkkijono on liian pitkä, saat rajaan sopivan katkaistun kopion, jossa yksikään merkki ei katkea keskeltä.

Ominaisuudet

  • Laskee merkit, Unicode-koodipisteet, UTF-16-koodiyksiköt ja UTF-8-tavut
  • Tarkistaa pituuden valinnaista vähimmäis- ja enimmäispituutta vastaan valitsemassasi yksikössä
  • Näyttää, kuinka monta yksikköä rajaan on jäljellä, kuinka monta puuttuu tai kuinka paljon raja ylittyy
  • Katkaisee liian pitkän merkkijonon jakamatta emojeita, lippuja tai tarkkeellisia kirjaimia
  • Voi jättää alku- ja loppupään välilyönnit huomiotta
  • Voi laskea rivinvaihdot CR LF -muodossa, kuten HTML-lomakkeet lähettävät ne

Näin se toimii

Merkit ovat grafeemiklusteriryhmiä eli yksiköitä, jotka ihminen lukee yhtenä merkkinä. Selain löytää ne sisäänrakennetun Unicode-tekstin segmentoinnin avulla. Koodipisteet ovat merkkijonon Unicode-arvoja. UTF-16-koodiyksiköt ovat arvoja, jotka JavaScriptin String.length palauttaa: Basic Multilingual Plane -alueen ulkopuoliset merkit, kuten useimmat emojit, vievät kaksi koodiyksikköä. UTF-8-tavut tarkoittavat merkkijonon kokoa UTF-8-muotoon koodattuna. Katkaisu säilyttää kokonaiset merkit, kunnes seuraavan merkin lisääminen ylittäisi enimmäispituuden.

Vinkkejä

  • MySQL:n VARCHAR- tai PostgreSQL:n varchar-rajaa varten tarkista pituus Unicode-koodipisteinä. Tavurajaa varten, kuten indeksin avaimessa tai verkkoprotokollan kentässä, tarkista pituus UTF-8-tavuina.
  • HTML-syötekentän maxlength-määrite laskee UTF-16-koodiyksiköitä, joten yksi emoji voi käyttää niistä kaksi.
  • Selaimet lähettävät textarea-kenttien rivinvaihdot CR LF -muodossa, joten pituuden tarkistava palvelin saattaa laskea jokaisen rivinvaihdon kahdeksi merkiksi. Ota CR LF -asetus käyttöön, jotta tulos vastaa tätä toimintaa.