CodeKitHub
Textverktyg

Byteräknare — Antal tecken vs bytestorlek

Senast uppdaterad:

Skriv eller klistra in text och se live hur många tecken den innehåller jämfört med hur många byte den faktiskt tar upp i UTF-8 och UTF-16 — de två talen skiljer sig åt så snart tecken utanför ASCII (accenter, CJK-text, emoji) förekommer.

0
Characters
0
UTF-8 bytes
0
UTF-16 bytes

Vad är detta verktyg?

För ren ASCII-text (engelska bokstäver, siffror, grundläggande skiljetecken) är antal tecken och antal byte samma tal — varje tecken tar exakt en byte i UTF-8. Så snart texten innehåller accenttecken, kinesiska/japanska/koreanska tecken, kyrilliska, arabiska, emoji eller de flesta andra tecken utanför ASCII slutar det gälla: ett enda tecken kan ta 2, 3 eller 4 byte i UTF-8, och 2 eller 4 byte i UTF-16.

Detta spelar roll när ett system har en gräns i byte snarare än i tecken — sms, kolumnstorlekar i databaser, gränser för API-nyttolaster och vissa sociala plattformar mäter allt i byte, inte tecken, så samma text kan tyst överskrida en gräns beroende på vilket språk eller vilka symboler den innehåller.

Varför använda det?

  • Visar antal tecken, UTF-8-byte och UTF-16-byte sida vid sida.
  • Räknar korrekt emoji och andra tecken utanför Basic Multilingual Plane som ett tecken, inte två.
  • Uppdateras live medan du skriver — ingen knapp att klicka på.
  • Körs helt i din webbläsare — ingen uppladdning.
  • Gratis, ingen registrering, inga gränser.

Så använder du det

  1. Skriv eller klistra in text i rutan.
  2. Läs antal tecken, antal UTF-8-byte och antal UTF-16-byte nedanför — de uppdateras medan du skriver.

Exempel

Inmatning

Hello, 世界! 🌍

Resultat

12 tecken, 19 UTF-8-byte, 26 UTF-16-byte

ASCII-delen ("Hello, " och "! ") tar 1 byte per tecken i UTF-8. Varje kinesiskt tecken tar 3 byte, och emojin tar 4 byte — därför är antalet byte märkbart högre än antalet tecken.

Vanliga användningsområden

  • Kontrollera om en flerspråkig produktbeskrivning passar i en databaskolumn som definieras av bytelängd snarare än antal tecken.
  • Uppskatta sms-segmentanvändning, eftersom sms faktureras och delas upp efter bytestorlek, och icke-latinsk text har en annan gräns per segment.
  • Verifiera att en API-nyttolast eller ett formulärfält förblir under en bytebaserad storleksgräns innan inskickning.
  • Förstå varför en sträng som "ser kort ut" avvisas av ett system med en bytebaserad längdkontroll.

Vanliga frågor

Varför stämmer inte antal tecken och antal byte överens?

Unicode-text lagras som byte, och hur många byte varje tecken behöver beror på kodningen och tecknet självt. I UTF-8 tar ASCII-tecken 1 byte, de flesta accenttecken i latinsk skrift samt kyrilliska/grekiska/hebreiska/arabiska tecken tar 2 byte, de flesta CJK-tecken tar 3 byte, och emoji tar vanligtvis 4 byte. Antal tecken räknar helt enkelt symboler, oavsett hur de lagras.

Vilket antal byte bör jag använda för ett bytebegränsat fält?

Använd den kodning som systemet faktiskt använder för att lagra eller överföra texten — de flesta moderna webb-API:er, databaser och filer använder UTF-8, så antalet UTF-8-byte är vanligtvis det relevanta. Vissa äldre system (som intern stränghantering i Windows/Java) använder UTF-16.

Räknar det här verktyget emoji korrekt?

Ja. Många emoji lagras internt som ett par UTF-16-"surrogat"-kodenheter, som naiva räknemetoder räknar som 2 tecken. Det här verktyget räknar Unicode-kodpunkter korrekt, så en emoji räknas som 1 tecken, vilket motsvarar hur många tecken en person faktiskt ser.

Är det här samma sak som verktyget Ordräknare?

Nej — Ordräknare fokuserar på antal ord och meningar för skrivande. Det här verktyget handlar specifikt om bytestorlek kontra antal tecken, vilket är relevant för tekniska gränser snarare än krav på ordantal.

Laddas min text upp någonstans?

Nej. Räkningen sker lokalt i din webbläsare med hjälp av JavaScripts inbyggda textkodare; ingenting skickas till en server.

Relaterade verktyg