Derniers journaux de pacifiko :
- [20/03@15:46] cris de rage contre le minéfi : yaaaaaarrrrrgllllllllllllllllllll
- [10/12@12:01] Offre d'emploi orientée linux sur le 92 pour bac+2
- [14/11@22:11] [HUMOUR] en rire ou en pleurer ?
- [05/11@02:10] Windows sur PowerPC ?
- [15/10@08:43] La Chine décolle
- [04/10@10:28] overflow: hidden
- [22/09@23:16] Drole de logs
- [28/08@13:28] adsl avec Laposte.net
- [28/08@08:45] A lire : L'avantage inattendu de l'Open Source
- [21/08@10:55] 2 liens pour le prix d'un
- [06/08@19:13] Geronimo, J2EE vu par Apache
- [01/08@12:55] Les freebox seraient utiles
- [28/07@10:27] A nous les navigateurs libres, merci Microsoft
- [27/07@12:01] sf.net, CVS et Revolution OS DVD
- [22/07@09:20] Liste des votes
- [21/07@20:56] Balade au pays des .gouv.fr
- [20/07@00:47] Maxximum de Souvenirs
- [19/07@21:11] Pour les tuxmaniac
- [04/07@19:24] Defacers Challenge le 06/07/2003
- [02/07@09:01] interview de Eirik ENG
Journal : [PBM UNICODE] Quelqu'un pour me confirmer?
Posté par B r u n o (page perso, ) le 30 mars 2004Ca marche très bien, sauf avec les fichiers générés par l'intermédiare du NotePad de Windows (et surement d'autres applications qui génèrent des fichiers textes en utf8).
Le pbm c'est qu'il rajoute des caractères exotiques en début de fichier. Ces caractères sont , soit en octets EF BB BF. Ils appellent cela un BOM (byte order mark). Le seul problème, c'est que si on regarde la norme Unicode, il n'y a pas besoin de BOM pour l'utf8, car c'est un encodage qui est traité octet par octet, il n'y a donc pas à se soucier de l'ordre (pas comme l'utf16, utf32). En tout cas ici http://www.unicode.org/unicode/faq/utf_bom.html#37(...) c'est ce qu'ils disent!
Donc je vais devoir me traiter un cas particulier parceque MS ne suit pas la norme et ajoute un pseudo-BOM (qui lui sert surement pour facilement reconnaitre les fichiers utf8), ou bien c'est moi qui comprend mal ?
> Lire le journal (12 commentaires, moyenne: 1,3).
Re: [PBM UNICODE] Quelqu'un pour me confirmer?
tu es sur que notepad écrit bient de l'uf8 ??
quand on dit unicode chez ms c'est de l'utf16
-
[^]Re: [PBM UNICODE] Quelqu'un pour me confirmer?
Posté par B r u n o (page perso, ) le 30/03/2004 à 17:35. (lien). Évalué à 1.oui, c'est bien de l'utf8. Si je vire le pseudo-bom ca marche.
Windows bosse en UTF16 en interne (comme java le fait). Et pour notepad, il y a marqué en gros "codage : UTF-8" ;-) Il propose Unicode et UnicodeBE aussi (ca, ca doit etre pour utf16 et utf16be)
Mais bon, je ne vais pas bosser en utf16... ca double le volume des fichiers
Re: [PBM UNICODE] Quelqu'un pour me confirmer?
t'as essayé un recode dessus? (quitte à faire un recode utf8 utf8 un peu dans le genre de la comande de la vie de la mort qui tue ps2ps (bien pratique desfois quand même))
-
[^]Re: [PBM UNICODE] Quelqu'un pour me confirmer?
Posté par B r u n o (page perso, ) le 30/03/2004 à 17:43. (lien). Évalué à 1.ouaip... mais ca change rien y a toujours ce foutu peudo-BOM en tête. Dans l'absolu c'est normal, recode n'a pas à toucher au contenu du fichier, pour lui ca doit faire partie des données du fichier, donc il n'y touche pas.
Re: [PBM UNICODE] Quelqu'un pour me confirmer?
Je confirme le problème sur ces p*****s de caractères parasites dans les UTF-8 générés par Win. J'ajoute que passer par OpenOffice ne règlera rien.
La solution que j'ai trouvé consiste à passer par un éditeur capable de coder le texte en UTF-8, mais infoutu de le lire, il s'agit de NotepadPro (IIRC). Plutôt tordu, non ?
Une deuxième solution pourrait être, par exemple, d'écrire une appli qui sucre automatiquement la première ligne d'un fichier, puis de la lancer sur des fichiers UTF-8 commençant par un saut de ligne, et adieu les caractères àlacon.
Bon courage, en tout cas !
signé : un pôv'type qui en a plus que bavé.
-
[^]Re: [PBM UNICODE] Quelqu'un pour me confirmer?
Posté par B r u n o (page perso, ) le 30/03/2004 à 17:48. (lien). Évalué à 2.bin en fait, j'ai approfondie ma recherche sur le site unicode.org et ce n'est pas illégal d'avoir ce BOM :
Q: Can a UTF-8 data stream contain the BOM character (in UTF-8 form)? If yes, then can I still assume the remaining UTF-8 bytes are in big-endian order?
A: Yes, UTF-8 can contain a BOM. However, it makes no difference as to the endianness of the byte stream. UTF-8 always has the same byte order. An initial BOM is only used as a signature an indication that an otherwise unmarked text file is in UTF-8. Note that some recipients of UTF-8 encoded data do not expect a BOM. Where UTF-8 is used transparently in 8-bit environments, the use of a BOM will interfere with any protocol or file format that expects specific ASCII characters at the beginning, such as the use of "#!" of at the beginning of Unix shell scripts.
Ils previennent bien que ca va foutre la merde, mais c'est pas grave!
Donc il faut se coltiner ce cas spécial.
Re: [PBM UNICODE] Quelqu'un pour me confirmer?
http://weblogs.asp.net/oldnewthing/archive/2004/03/24/95235.aspx(...)
Re: [PBM UNICODE] Quelqu'un pour me confirmer?
Q: Is the UTF-8 encoding scheme the same irrespective of whether the underlying processor is little endian or big endian?
A: Yes. Since UTF-8 is interpreted as a sequence of bytes, there is no endian problem as there is for encoding forms that use 16-bit or 32-bit code units. Where a BOM is used with UTF-8, it is only used as an ecoding signature to distinguish UTF-8 from other encodings it has nothing to do with byte order.
Donc ce n'est pas un cas spécial MS, c'est un cas autorisé par la norme.
Il ne faut pas cracher sur MS quand MS est conforme à la norme... Même si ce conformité est différente de ce que fait Unix!!!
(perso, j'apprécie dans mes codages, car après savoir si c'est de l'UTF-8 ou du latin-1, hum... comment fais-tu pour détecter?)
-
[^]Re: [PBM UNICODE] Quelqu'un pour me confirmer?
Posté par B r u n o (page perso, ) le 31/03/2004 à 08:51. (lien). Évalué à 1.Bin il existe des algos pour deviner l'encodage du fichier (ce que fait mozilla assez bien d'ailleurs).
En cherchant "guess charset" dans google notre ami (mais pas sûr qu'il nous veuille toujours du bien) on trouve des infos. Il existe un port de l'algo de Mozilla en java (trouvé sur sf.net, mais pas le lien sous la main, la flemme de chercher).
Sinon Groovy intègre un "Charset Detector" aussi. En regardant comment il fonctionne : il regarde si il y a un BOM, dans ce cas il retourne le charset unicode correspondant, sinon il considère que c'est de l'utf8 et il parcourt un extrait du fichier jusqu'à rencontrer un caractère qui ne correspond pas à de l'utf8. Si il en trouve un, il retourne le charset par défault (ca vaut ce que ca vaut).
ps : je n'ai pas craché directement sur MS, je me suis posé la question de savoir si c'etait prévu. Apparement il n'y a qu'eux qui le font. Car ca brise la compatibilité latin/utf8 pour les char <= 127
Re: [PBM UNICODE] Quelqu'un pour me confirmer?
Savez-vous comment réagit JAVA à ces BOM ?
Est-il facile de mettre en string un fichier text UTF* avec un BOM ?
(Je sais que l'on peut préciser à JAVA l'encodage, mais pour le BOM, je n'ai rien vu.)
locnet
-
[^]Re: [PBM UNICODE] Quelqu'un pour me confirmer?
Posté par B r u n o (page perso, ) le 31/03/2004 à 08:27. (lien). Évalué à 1.Justement, je charge les fichiers en java. Faire un InputStreamReader avec de l'UTF-8 ne fait pas sauter le BOM. Apparement Java ne s'attends pas à le trouver. Il faudrait que je regarde sur le site de SUN ce qu'ils en disent
Dans mon cas concret c'etait pour charger des scripts sql avec la tâche ant sql. J'ai bidouillé la tâche, ca marche. Il serait peut être possible de passer par un filtre, mais je n'ai pas approfondi.
mm pb avec SciTE...
Il génère aussi un BOM certainement standard en débu de fichier pour détecter si le fichier est bien en UTF-8, et directement utiliser le mode UT-8 au chragement. Le pb, c'est que les fichiers PHP avec cookies ne passent plus dans ce cas (headers alreay sent) ou encore d'autres joyeusetées.
La solution ? Faire File > Encoding > 8 Bits et sauvegarder. Le BOM aura disparu et le fichier sera tjs en UTF-8. Magique. Néanmoins ce truc est assez lourdingue quand même.
Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.