45 votes

Calcul de la longueur en UTF-8 de Java String sans l’encoder réellement

Quelqu’un sait-il si la bibliothèque Java standard (n’importe quelle version) fournit un moyen de calculer la longueur de l’encodage binaire d’une chaîne (en particulier UTF-8 dans ce cas) sans réellement générer la sortie codée? En d’autres termes, je cherche un équivalent efficace de ceci:

Je dois calculer un préfixe de longueur pour les messages sérialisés potentiellement longs.

51voto

McDowell Points 62645

Voici une implémentation basée sur la spécification UTF-8:

Cette implémentation ne tolère pas les chaînes mal formées.

Voici un test JUnit 4 pour vérification:

Veuillez excuser le formatage compact.

19voto

Aaron Points 1

Utilisation de l’Utf8de Guava :

1voto

Trevor Robinson Points 3657

La meilleure méthode que j’ai pu trouver est d’utiliser CharsetEncoder pour écrire à plusieurs reprises dans le même tampon temporaire:

0voto

Martijn Courteaux Points 33836

Vous pouvez effectuer une boucle à travers la chaîne :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X