fr.comp.normes.unicode
[Top] [All Lists]

Re: codage de sortie de la bdd (problème de débutant avec utf-8)

Subject: Re: codage de sortie de la bdd problème de débutant avec utf-8
From: Olivier Miakinen
Date: Wed, 01 Feb 2006 17:54:32 +0100
Newsgroups: fr.comp.normes.unicode
Le 01/02/2006 15:05, Vincent Ramos répondait à D. Eissart :
> 
> Vous l'avez codé avec U+009C, qui s'affiche comme un <œ> sous Windows mais
> pas ailleurs. En effet, cet <œ>-là est propre à un jeu de caractères de ce
> système d'exploitation (CP-1252) mais ne devrait pas être codé ainsi hors
> de Windows (il apparaît ailleurs comme un caractère non imprimable).

Oui.

> Pour
> bien faire, vous devriez le coder par U+0153. Quand vous avez injecté votre
> texte dans la bdd, vous avez dû le faire avec un texte mal codé.

Plutôt que « mal codé », je dirais « bien codé, mais dans un jeu
propriétaire ». Ce n'est pas très grave si cela reste un format
interne (il traduit en UTF-8 au moment de l'affichage).

> Pour corriger cela, extrayez le texte de votre base de données (sous
> PHPMyAdmin --> exporter), et remplacez tous vos <œ> par la bonne version 
> puis réinjectez cela dans la base. 

Sauf que, si j'ai bien compris, c'est impossible du fait que la base
contient du CP1252 (8 bits), et que donc le caractère U+0153 ne peut pas
y être représenté.

Comme j'ai expliqué sur fr.comp.lang.php, soit il passe toute sa base en
UTF-8 (ce qui est la meilleure solution mais qui peut lui prendre un peu
de temps et de sueur), soit il utilise iconv() pour traduire de CP1252
en UTF-8 avant l'affichage, soit encore il utilise utf8_encode() plus
une bidouille pour traiter le cas particulier des caractères qui ne sont
pas dans ISO-8859-1.

-- 
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles.  (3 c.)

<Prev in Thread] Current Thread [Next in Thread>