Octets d'une chaîne de caractères en Java

En Java, si j'ai une Chaîne x, comment puis-je calculer le nombre d'octets dans cette chaîne?

  • On pourrait vouloir utiliser une Chaîne de caractères pour représenter le corps de la réponse HTTP et utiliser la taille pour définir le "Content-length" (Longueur d'en-tête, qui est spécifiée en octets/bytes pas de caractères. w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
  • Une colonne de base de données peut avoir de limitation de la longueur, en octets, par exemple VARCHAR2 (4000 OCTETS) dans Oracle. On peut avoir envie de connaître le nombre d'octets d'une Chaîne de caractères en encodage souhaité savoir si la Chaîne de caractères adaptée.
  • Exactement le même que j'essayais de faire.
  • Je crois qu'il y a deux interprétations possibles de cette question, en fonction de l'intention: l'Un est "combien de mémoire mon String utiliser?". La réponse à cette question est fournie par @roozbeh ci-dessous (peut-être modulo VM subtilités comme compressé OUPS). L'autre est, "si je convertir la chaîne de caractères à un octet[] combien de mémoire que le tableau d'octets à utiliser?". C'est la question à laquelle il est répondu par Andrzej Doyle. La différence peut être importante: "Hello World" en UTF8 est de 11 octets, mais la Chaîne (par @roozbeh) est de 50 octets (si mon calcul est à droite).
  • J'aurais ajouté que le 11 octets ne comprennent pas les frais généraux de l'byte[] de l'objet qui les contient, de sorte que la comparaison est quelque peu trompeur.
InformationsquelleAutor Green | 2010-12-08