Kas yra šis įrankis?
Paprastam ASCII tekstui (angliškoms raidėms, skaitmenims, pagrindiniams skyrybos ženklams) simbolių skaičius ir baitų skaičius sutampa — kiekvienas simbolis UTF-8 koduotėje užima lygiai vieną baitą. Kai tekste atsiranda diakritinių raidžių, kinų / japonų / korėjiečių rašmenų, kirilicos, arabiško rašto, jaustukų ar daugumos kitų ne ASCII simbolių, tai nebegalioja: vienas simbolis UTF-8 koduotėje gali užimti 2, 3 ar 4 baitus, o UTF-16 koduotėje — 2 ar 4 baitus.
Tai svarbu visada, kai sistemoje taikomas baitų, o ne simbolių limitas — SMS žinutės, duomenų bazių stulpelių dydžiai, API duomenų krūvio apribojimai ir kai kurios socialinės platformos matuoja baitais, o ne simboliais, todėl tas pats tekstas gali nepastebimai viršyti ribą priklausomai nuo kalbos ar simbolių, kuriuos jis turi.
Kodėl jį naudoti?
- Rodo simbolių skaičių, UTF-8 baitus ir UTF-16 baitus greta vienas kito.
- Teisingai skaičiuoja jaustukus ir kitus simbolius už pagrindinės daugiakalbės plokštumos (Basic Multilingual Plane) ribų kaip vieną simbolį, o ne du.
- Atnaujinama realiu laiku rašant — nereikia spausti jokio mygtuko.
- Veikia visiškai jūsų naršyklėje — jokio įkėlimo į serverį.
- Nemokama, be registracijos, be apribojimų.
Kaip naudoti
- Įveskite arba įklijuokite tekstą į laukelį.
- Po juo perskaitykite simbolių skaičių, UTF-8 baitų skaičių ir UTF-16 baitų skaičių — jie atnaujinami rašant.
Pavyzdys
Įvestis
Hello, 世界! 🌍Išvestis
12 simbolių, 19 UTF-8 baitų, 26 UTF-16 baitaiASCII dalis ("Hello, " ir "! ") UTF-8 koduotėje užima 1 baitą vienam simboliui. Kiekvienas kinų rašmuo užima 3 baitus, o jaustukas — 4 baitus, todėl baitų skaičius yra pastebimai didesnis nei simbolių skaičius.
Dažniausi naudojimo atvejai
- Patikrinti, ar daugiakalbis produkto aprašymas tilps duomenų bazės stulpelyje, apibrėžtame pagal ilgį baitais, o ne simbolių skaičių.
- Įvertinti SMS segmentų skaičių, nes SMS apmokestinamos ir skaidomos pagal dydį baitais, o ne lotyniško rašto tekstui taikoma kitokia riba vienam segmentui.
- Patikrinti, ar API duomenų krūvis arba formos laukas prieš pateikiant neviršija baitais grįsto dydžio apribojimo.
- Suprasti, kodėl eilutę, kuri "atrodo trumpa", sistema atmeta dėl baitais grįsto ilgio patikrinimo.
Dažniausiai užduodami klausimai
Kodėl simbolių skaičius ir baitų skaičius nesutampa?
Unikodo tekstas saugomas kaip baitai, o kiek baitų reikia kiekvienam simboliui, priklauso nuo koduotės ir paties simbolio. UTF-8 koduotėje ASCII simboliai užima 1 baitą, dauguma diakritinių lotyniškų raidžių bei kirilicos, graikų, hebrajų ir arabų raidžių užima 2 baitus, dauguma CJK rašmenų užima 3 baitus, o jaustukai paprastai užima 4 baitus. Simbolių skaičius tiesiog suskaičiuoja ženklus, neatsižvelgdamas į tai, kaip jie saugomi.
Kurį baitų skaičių naudoti laukui su baitų apribojimu?
Naudokite tą koduotę, kurią sistema iš tikrųjų naudoja tekstui saugoti ar perduoti — dauguma šiuolaikinių žiniatinklio API, duomenų bazių ir failų naudoja UTF-8, todėl paprastai aktualus yra UTF-8 baitų skaičius. Kai kurios senesnės sistemos (pavyzdžiui, vidinis eilučių apdorojimas Windows / Java aplinkoje) naudoja UTF-16.
Ar šis įrankis teisingai skaičiuoja jaustukus?
Taip. Daugelis jaustukų viduje saugomi kaip pora UTF-16 "pakaitinių" (surogatinių) kodo vienetų, kuriuos naivūs skaičiavimo metodai užskaito kaip 2 simbolius. Šis įrankis teisingai skaičiuoja Unikodo kodo taškus, todėl jaustukas skaičiuojamas kaip 1 simbolis — taip, kiek simbolių žmogus iš tikrųjų mato.
Ar tai tas pats, kas įrankis Žodžių skaitiklis?
Ne — Žodžių skaitiklis skirtas žodžių ir sakinių skaičiui rašymo tikslais. Šis įrankis konkrečiai skirtas dydžiui baitais, palyginti su simbolių skaičiumi, kas svarbu techniniams apribojimams, o ne žodžių skaičiaus reikalavimams.
Ar mano tekstas kur nors įkeliamas?
Ne. Skaičiavimas vyksta vietoje, jūsų naršyklėje, naudojant įtaisytąjį „JavaScript“ teksto koduotoją; niekas nesiunčiama į serverį.