Quelle est la différence entre les fonctions ruby string : points de code et octets ?
'abcd'.bytes
=> [97, 98, 99, 100]
'abcd'.codepoints
=> [97, 98, 99, 100]
Quelle est la différence entre les fonctions ruby string : points de code et octets ?
'abcd'.bytes
=> [97, 98, 99, 100]
'abcd'.codepoints
=> [97, 98, 99, 100]
bytes
renvoie des octets individuels, quelle que soit la taille des caractères, alors que codepoints
renvoie les points de code unicode.
s = '日本語'
s.bytes # => [230, 151, 165, 230, 156, 172, 232, 170, 158]
s.codepoints # => [26085, 26412, 35486]
s.chars # => ["日", "本", "語"]
Je vois d'où vient votre confusion. Ruby utilise maintenant l'encodage utf-8 par défaut et utf-8 a été spécifiquement conçu pour que ses premiers points de code (0-127) soient exactement comme dans le codage ASCII. L'ASCII est un codage avec des caractères d'un octet, donc dans les exemples des méthodes de votre question bytes
y codepoints
renvoient les mêmes valeurs, par coïncidence .
Ainsi, si vous devez décomposer une chaîne en caractères, utilisez soit chars
o codepoints
(selon ce qui convient le mieux à votre cas d'utilisation). Utilisez bytes
uniquement lorsque vous traitez la chaîne de caractères comme un blob binaire opaque, et non comme du texte.
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.