Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2007 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Edition de fichier] j'ai des "^@" intercalés partout > Unicode ?

 

Sujet(s) à lire :
    - SQL Server 7.0 et Windows 2000
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Edition de fichier] j'ai des "^@" intercalés partout > Unicode ?

n°272521
Evadream -​jbd-
Posté le 19-12-2002 à 00:45:05  profilanswer
 

Hello tout le monde,
 
je cross post un peu un topic que j'ai lancé sur OSA. Voici le problème :
 
Je regarde des fichiers de log générés sur un serveur Unreal Tournament tournant sous Linux et entre chaque caractère j'ai un ^@ qui apparait, Voici un exemple où on voit marqué game GameMutator
 

^@g^@a^@m^@e^@  ^@G^@a^@m^@e^@M^@u^@t^@a^@t^@o^@r^@  

 
 
Kristoph m'a fait la remarque suivante :
 

UT => Unicode => log d'UT en Unicode
Le caractère ^@ correspond au caractère 0x00 en hexa. Unicode donc


 
En faisant un cat sur ce fichier, il s'affiche correctement. Mais en redirigeant le cat sur un fichier et en éditant celui après, j'ai toujours la même chose. J'ai bidouillé sans trop de raisons avec flip et dos2unix, mais ca ne change pas. J'ai fini par tenté un less apres un export LESSCHARSET=utf-8, mais ca ne fonctionne pas.
 
Il me faudra juste un cat "unicode", que je puisse redirigé sa sortie dans un fichier. Une idée d'outil déja existant ou autre ?
 
Merci d'avance à vous !
 
A+


Message édité par Evadream -jbd- le 19-12-2002 à 01:40:33
mood
Publicité
Posté le 19-12-2002 à 00:45:05  profilanswer
 

n°272533
Evadream -​jbd-
Posté le 19-12-2002 à 01:39:58  profilanswer
 

J'ai mis au point une petite fonction en C qui vaut ce qu'elle vaut, et qui me permet d'obtenir un fichier sans les ^@ entre chaque caractère, juste en me décalant d'un octet avant chaque lecture...
 

Code :
  1. void un2txt(FILE* source,FILE* destination){   
  2. char i;
  3.     while(!feof(source)){
  4.         if(isascii(i=fgetc(source)) && i != 0){
  5.                 fputc(i,destination);
  6.                 fgetc(source);
  7.         }
  8.     }
  9. }


 
Rien d'exceptionnel donc... J'aimerais tout de même en savoir un peu plus sur le fond du problème... =)
 
Par ailleurs, je profite de cette question pour vous demander comment exploiter les jokers en ligne de commande ? J'imagine bien sur qu'il va falloir passer par argc, argv* char[], mais c'est pour savoir si il y a des mécanismes tout fait ou il faut que je fasse ca avec mes petites mains ?
 
Par exemple, si je veux convertir un ensemble de fichier d'un répertoire avec mon petit programme, que je nommerais conv, et que je veuille appliquer ce prog à l'ensemble de fichiers d'un répertoire en faisant ./conv * ?
 
Merci d'avance !
 
A+


Message édité par Evadream -jbd- le 19-12-2002 à 01:51:32
n°273306
kuroineko
je mamgerais bien un truc la..
Posté le 19-12-2002 à 19:45:02  profilanswer
 

Evadream -jbd- a écrit :

Hello tout le monde,
 
je cross post un peu un topic que j'ai lancé sur OSA. Voici le problème :
 
Je regarde des fichiers de log générés sur un serveur Unreal Tournament tournant sous Linux et entre chaque caractère j'ai un ^@ qui apparait, Voici un exemple où on voit marqué game GameMutator
 

^@g^@a^@m^@e^@  ^@G^@a^@m^@e^@M^@u^@t^@a^@t^@o^@r^@  

 
 
Kristoph m'a fait la remarque suivante :
 

UT => Unicode => log d'UT en Unicode
Le caractère ^@ correspond au caractère 0x00 en hexa. Unicode donc


 
En faisant un cat sur ce fichier, il s'affiche correctement. Mais en redirigeant le cat sur un fichier et en éditant celui après, j'ai toujours la même chose. J'ai bidouillé sans trop de raisons avec flip et dos2unix, mais ca ne change pas. J'ai fini par tenté un less apres un export LESSCHARSET=utf-8, mais ca ne fonctionne pas.
 
Il me faudra juste un cat "unicode", que je puisse redirigé sa sortie dans un fichier. Une idée d'outil déja existant ou autre ?
 
Merci d'avance à vous !
 
A+


 
si ca vient d'un ftp ton fichier c'est normal que ca ai merde, tu etait pas dans le bon mode....
ascii/bin
 
tu peux utiliser dos2unix comme script par exemple
 


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
n°273308
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 19-12-2002 à 19:52:24  profilanswer
 

Evadream -jbd- a écrit :

Rien d'exceptionnel donc... J'aimerais tout de même en savoir un peu plus sur le fond du problème... =)


 
Bin en fait, Unicode c'est une énoooorme table ASCII dans laquelle sont stockés les caractères de tous les langages. Evidemment, en codant les caractères sur 2 octets comme en Anglais ou Français, c'est pas suffisant pour tout mettre. Donc pour pouvoir faire ça, chaque caractère Unicode est encodé sur 4 octets. Du coup, un caractère comme espace au lieu d'être encodé sous la forme 0x20 bin il devient 0x0020. D'où l'apparition des caractères zarbes que t'as eus :)

n°273480
Evadream -​jbd-
Posté le 20-12-2002 à 00:47:22  profilanswer
 

kuroineko > Merci pour ta réponse, mais le problème ne venait pas de là, j'avais d'ailleurs déja fait des essais avec dos2unix et flip =)
 
Taiche > Merci énormément pour tes précisions !
 
A+

n°273496
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-12-2002 à 08:56:16  profilanswer
 

Taiche a écrit :


 
Bin en fait, Unicode c'est une énoooorme table ASCII dans laquelle sont stockés les caractères de tous les langages. Evidemment, en codant les caractères sur 2 octets comme en Anglais ou Français, c'est pas suffisant pour tout mettre. Donc pour pouvoir faire ça, chaque caractère Unicode est encodé sur 4 octets. Du coup, un caractère comme espace au lieu d'être encodé sous la forme 0x20 bin il devient 0x0020. D'où l'apparition des caractères zarbes que t'as eus :)


 :heink:  
T'as fumé la moquette toi ! D'ou t'as vu qu'unicode est codé sur 4 octets ?
Unicode est codé sur 16 bits, donc 2 octets ! Tu trouves que 65535 caractères possibles, c pas suffisant ?
Et 0x0020 est un nombre 16 bits, et non 32 bits !


---------------
J'ai un string dans l'array (Paris Hilton)
n°273531
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-12-2002 à 09:54:29  profilanswer
 

Harkonnen a écrit :


 :heink:  
T'as fumé la moquette toi ! D'ou t'as vu qu'unicode est codé sur 4 octets ?
Unicode est codé sur 16 bits, donc 2 octets ! Tu trouves que 65535 caractères possibles, c pas suffisant ?
Et 0x0020 est un nombre 16 bits, et non 32 bits !


 
Humpf, je me suis carrément mélangé les pinceaux :o
Oui, c'est bien évidemment 2 octets et non 4 comme j'ai pu l'écrire dans un élan de connerie (fatigue ???) hier soir. Sinon y aurait 3 caractères zarbes devant chaque lettre et non un seul :D
Bref, désolé...


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°273543
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-12-2002 à 10:12:40  profilanswer
 

Alors j'viens de me renseigner et comme j'me disais bien que 65535 caractères, c'était pas assez pour tout coder (si on prend tous les langages existants, vivants ou morts), bin en fait il existe un truc encore plus bourrin qui est l'UCS-4 (ISO 10646). C'est codé sur 31 bits (le 32ème n'est pas utilisé) et est assez rarement pris en compte dans la pratique. Bref, ça existe mais c'est tout :D A noter que la forme UCS-2 est équivalente à l'Unicode.
Tout ça pour dire que l'encodage sur (presque) 4 octets, ça existe si jamais y a des gens qui le cherchent :)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Edition de fichier] j'ai des "^@" intercalés partout > Unicode ?

 

Sujets relatifs
comment transformer un fichier .max de 3d studio max en fichier .ase ?fichier date en batch DOS
[PHP] accès qu système de fichier et vérouillage de fichiers (flock)[open gl]comment afficher un objet qui est dans un fichier 3D s max?
Modifier la BDR avec un fichier BAT & REG?PHP Envoyer un fichier...
Creer un fichier XML en Javatransferer un fichier sur un serveur ftp
[VBSCRIPT]Ouvrir un fichier pour faire une recherche de caractereTravailler sous VB avec un fichier .DBF
Plus de sujets relatifs à : [Edition de fichier] j'ai des "^@" intercalés partout > Unicode ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR