Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

séparateur 0 des strings C ?

3 réponses
Avatar
unbewusst.sein
je bidouille le fichier Accounts de MacSOUP qui utilise 0 comme
séparateur.

le but de la manip est de changer de signature, bon, j'y arrive en ruby
(1.8.x apple builtin) et en ruby 1.9 (MacPorts), pas moyen avec macruby
:
macruby(39329,0x103a81000) malloc: resurrection error for object
0x200287c00 while assigning {conservative-block}[32](0x2003fa940)[0] =
String[64](0x200287c00)
garbage pointer stored into reachable memory, break on
auto_zone_resurrection_error to debug
/Users/yt/dev/MacRuby/MacSOUP_random_signature_macruby.rb:27:in
`change_signature:': incompatible character encodings: UTF-8 and
macRoman (Encoding::CompatibilityError)
from
/Users/yt/dev/MacRuby/MacSOUP_random_signature_macruby.rb:4:in `<main>'


ce problème vient du \0 il a lieu uniquement quand je souhaite
enregistrer la chaîne dans un fichier.

encore plus curieux si je prend le fichier tel quel et que je
l'enregistre, pas de problème.

le seul "truc" (mais qui marche très bien avec ruby 1.8.x et ruby 1.9)
est que j'ai défini se séparateur comme :
SEP = 0.chr

donc la question est : est-ce que ce caractère fait partie de UTF-8 et
pas de MacRoman ?

peut être que le problème n'a rien à voir avec \0, macruby ne me semble
pas stable du tout (version 0.7)

--
« L'amour, c'est quand on rencontre quelqu'un
qui vous donne de vos nouvelles. »
(André Breton)

3 réponses

Avatar
Éric Lévénez
Le 20/05/10 19:21, Une Bévue a écrit :

donc la question est : est-ce que ce caractère fait partie de UTF-8 et
pas de MacRoman ?



Si ta question est sur le C, alors toute chaîne de type char se termine
par 0. Ceci est indépendant de l'interprétation du jeu de caractères qui
la compose. Les encodages 8 bits utilisent cette convention, comme
l'UTF-8. L'exception est l'UTF16 et 32 qui peuvent contenir des 0.

L'extension wchar_t travaillent pratiquement toujours en Unicode, mais
ce n'est pas une chaîne dans le sens où tu l'entends je pense.

Historiquement le Mac travaillait avec des chaînes Pascal dont la
longueur était dans le premier octet et donc les chaînes étaient
limitées à 255 octets avec un encodage 8 bits. Disparu sur Mac OS X.

Mais dans tes manips, il ne faut pas oublier que MacSOUP c'est du
charbon dont la couche UTF-8 est fine comme une papier cul. Il n'y a
qu'à voir le couper-coller qu'ose faire ce soft...

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Avatar
unbewusst.sein
Éric Lévénez wrote:

Mais dans tes manips, il ne faut pas oublier que MacSOUP c'est du
charbon dont la couche UTF-8 est fine comme une papier cul. Il n'y a
qu'à voir le couper-coller qu'ose faire ce soft...



ouais, je sais, c'est bien ça le pb, bizarre que ça marche avec ruby,
ruby 1.9 mais pas avec macruby (basé sur ruby1.9 mais aussi sur les
NSMutableString)

ce que je trouve curieux c'est que si je prends le fichier MacSOUP tel
quel, que je le lis avec MacRuby et que je l'enregistre ailleurs avec
MacRuby, ça roule, ce fichier (j'ai vérifié avec HexEdit) comporte bien
des comme utilisé en C.

bon, je jette l'éponge...
--
« L'amour, c'est quand on rencontre quelqu'un
qui vous donne de vos nouvelles. »
(André Breton)
Avatar
benoit.sansspam
Une Bévue wrote:

bon, je jette l'éponge...



Fais gaffe à la soupe !

;)

--
Benoît http://picasaweb.google.com/leraillez/

Avec des fumeurs c'est difficile de s'arrêter. Avec des branleurs,
là, par contre, c'est difficile de continuer.