Utilisation des octets dans le codage de chaîne
Le calcul du nombre d'octets dans une chaîne en Java nécessite de prendre en compte la méthode de codage utilisée. Les chaînes sont des séquences de caractères et le nombre d'octets requis pour les représenter dépend du schéma de codage utilisé pour les convertir en octets.
Détermination du nombre d'octets
Pour obtenir la taille d'une chaîne en octets, convertissez-la en tableau d'octets à l'aide de la méthode getBytes() et inspectez la taille du tableau :
String string = "Hello World";
byte[] utf8Bytes = string.getBytes("UTF-8");
int byteCount = utf8Bytes.length;
Considérations sur le codage
Le schéma de codage affecte le nombre d'octets. Voici des exemples de différents encodages appliqués à la même chaîne :
byte[] utf8Bytes = string.getBytes("UTF-8"); // Each char as 1 byte
byte[] utf16Bytes = string.getBytes("UTF-16"); // Each char as 2 bytes
byte[] utf32Bytes = string.getBytes("UTF-32"); // Each char as 4 bytes
byte[] isoBytes = string.getBytes("ISO-8859-1"); // Each ASCII char as 1 byte
byte[] winBytes = string.getBytes("CP1252"); // Each ASCII char as 1 byte
Caractères spéciaux et encodages multi-octets
Même les chaînes ASCII peuvent avoir un nombre d'octets variable en fonction de l'encodage. Par exemple, en UTF-8, certains caractères peuvent nécessiter plusieurs octets :
String interesting = "\uF93D\uF936\uF949\uF942"; // Chinese ideograms
byte[] utf8Bytes = interesting.getBytes("UTF-8"); // Each char as 3 bytes
Encodage par défaut et spécification explicite
Si aucun argument d'encodage n'est fourni, le jeu de caractères par défaut de la plate-forme est utilisé. Il est recommandé de toujours spécifier explicitement le jeu de caractères souhaité pour éviter des résultats inattendus.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3