CodeKitHub
Tekstværktøjer

Bytetæller — Antal tegn vs bytestørrelse

Senest opdateret:

Skriv eller indsæt tekst, og se live hvor mange tegn den indeholder sammenlignet med hvor mange byte den faktisk fylder i UTF-8 og UTF-16 — de to tal afviger, så snart der er tegn uden for ASCII (accenter, CJK-tekst, emoji).

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

Hvad er dette værktøj?

For ren ASCII-tekst (engelske bogstaver, tal, grundlæggende tegnsætning) er antal tegn og antal byte det samme tal — hvert tegn fylder præcis én byte i UTF-8. Så snart teksten indeholder accenttegn, kinesiske/japanske/koreanske tegn, kyrillisk, arabisk, emoji eller de fleste andre tegn uden for ASCII, gælder dette ikke længere: et enkelt tegn kan fylde 2, 3 eller 4 byte i UTF-8, og 2 eller 4 byte i UTF-16.

Dette er vigtigt, når et system har en grænse i byte snarere end i tegn — sms-beskeder, kolonnestørrelser i databaser, grænser for API-payloads og nogle sociale platforme måler alle i byte, ikke tegn, så den samme tekst kan overskride en grænse i det stille afhængigt af hvilket sprog eller hvilke symboler den indeholder.

Hvorfor bruge det?

  • Viser antal tegn, UTF-8-byte og UTF-16-byte side om side.
  • Tæller korrekt emoji og andre tegn uden for Basic Multilingual Plane som ét tegn, ikke to.
  • Opdateres live mens du skriver — ingen knap at klikke på.
  • Kører helt i din browser — ingen upload.
  • Gratis, ingen tilmelding, ingen grænser.

Sådan bruger du det

  1. Skriv eller indsæt tekst i feltet.
  2. Læs antal tegn, antal UTF-8-byte og antal UTF-16-byte nedenfor — de opdateres mens du skriver.

Eksempel

Input

Hello, 世界! 🌍

Output

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

ASCII-delen ("Hello, " og "! ") fylder 1 byte pr. tegn i UTF-8. Hvert kinesisk tegn fylder 3 byte, og emojien fylder 4 byte — derfor er antal byte mærkbart højere end antal tegn.

Almindelige anvendelser

  • Tjek om en flersproget produktbeskrivelse passer i en databasekolonne defineret ved bytelængde snarere end antal tegn.
  • Estimering af sms-segmentforbrug, da sms faktureres og opdeles efter bytestørrelse, og ikke-latinsk tekst har en anden grænse pr. segment.
  • Bekræftelse af, at en API-payload eller et formularfelt forbliver under en bytebaseret størrelsesgrænse, før det indsendes.
  • At forstå hvorfor en streng, der "ser kort ud", bliver afvist af et system med en bytebaseret længdekontrol.

Ofte stillede spørgsmål

Hvorfor stemmer antal tegn og antal byte ikke overens?

Unicode-tekst gemmes som byte, og hvor mange byte hvert tegn kræver, afhænger af kodningen og selve tegnet. I UTF-8 fylder ASCII-tegn 1 byte, de fleste accenttegn i latin samt kyrillisk/græsk/hebraisk/arabisk fylder 2 byte, de fleste CJK-tegn fylder 3 byte, og emoji fylder typisk 4 byte. Antal tegn tæller simpelthen symboler uden hensyn til, hvordan de gemmes.

Hvilket antal byte bør jeg bruge til et byte-begrænset felt?

Brug den kodning, systemet faktisk bruger til at gemme eller overføre teksten — de fleste moderne web-API'er, databaser og filer bruger UTF-8, så antal UTF-8-byte er normalt det relevante. Nogle ældre systemer (som intern strengbehandling i Windows/Java) bruger UTF-16.

Tæller dette værktøj emoji korrekt?

Ja. Mange emoji gemmes internt som et par UTF-16-"surrogat"-kodeenheder, som naive tælle­metoder tæller som 2 tegn. Dette værktøj tæller Unicode-kodepunkter korrekt, så en emoji tælles som 1 tegn, hvilket svarer til hvor mange tegn en person faktisk ser.

Er dette det samme som Ordtæller-værktøjet?

Nej — Ordtæller fokuserer på antal ord og sætninger til skrivning. Dette værktøj handler specifikt om bytestørrelse i forhold til antal tegn, hvilket er relevant for tekniske grænser snarere end krav til ordantal.

Bliver min tekst uploadet et sted?

Nej. Tællingen sker lokalt i din browser ved hjælp af JavaScripts indbyggede tekstkoder; intet sendes til en server.

Relaterede værktøjer