Wat is de lengte van een string?

De lengte van een string hangt af van wat je telt. Een persoon ziet tekens, maar programma's tellen codepunten, UTF-16-code-eenheden of bytes, en deze aantallen verschillen vaak. De emoji 👍🏽 ziet eruit als één teken, maar bestaat uit 2 codepunten, 4 UTF-16-code-eenheden en 8 UTF-8-bytes. JavaScript, Java en C# rapporteren UTF-16-code-eenheden als de lengte, databases beperken vaak het aantal bytes en formuliervelden kunnen regeleinden als twee tekens tellen.

Beschrijving van de tool

Deze tool toont de lengte van een string tegelijkertijd in vier eenheden en controleert deze aan de hand van een minimale en maximale lengte. Gebruik de tool om te controleren of een gebruikersnaam, titel of databasewaarde binnen een limiet past, of om te achterhalen waarom twee programma's verschillende lengtes rapporteren voor dezelfde tekst. Als de string te lang is, krijg je een afgekorte kopie die binnen de limiet past zonder een teken halverwege af te breken.

Functies

  • Telt tekens, Unicode-codepunten, UTF-16-code-eenheden en UTF-8-bytes
  • Controleert de lengte aan de hand van een optionele minimum- en maximumwaarde, in de eenheid die je kiest
  • Toont hoeveel eenheden er nog over zijn, ontbreken of de limiet overschrijden
  • Kort een te lange string in zonder emoji, vlaggen of letters met accenten op te splitsen
  • Kan witruimte aan het begin en einde negeren
  • Kan regeleinden tellen als CR LF, zoals HTML-formulieren deze verzenden

Hoe het werkt

Tekens zijn graphemeclusters: eenheden die iemand als één teken leest, bepaald met de ingebouwde Unicode-tekstsegmentatie van de browser. Codepunten zijn de Unicode-waarden in de string. UTF-16-code-eenheden zijn wat String.length in JavaScript retourneert: tekens buiten het Basic Multilingual Plane, zoals de meeste emoji, nemen twee eenheden in beslag. UTF-8-bytes zijn de grootte van de string wanneer deze als UTF-8 is gecodeerd. Bij het afkorten worden volledige tekens behouden totdat het volgende teken de maximale lengte zou overschrijden.

Tips

  • Controleer voor een VARCHAR-limiet in MySQL of een varchar-limiet in PostgreSQL op Unicode-codepunten. Controleer voor een limiet in bytes, zoals bij een indexsleutel of een veld in een netwerkprotocol, op UTF-8-bytes.
  • Het kenmerk maxlength van een HTML-invoerveld telt UTF-16-code-eenheden, waardoor een emoji maximaal twee eenheden kan gebruiken.
  • Browsers verzenden regeleinden in textarea als CR LF, waardoor een server die de lengte controleert elk regeleinde twee keer kan tellen. Schakel de optie CR LF in om dit overeen te laten komen.