Aide - Recherche - Membres - Calendrier
Version complète : [résolu] :encodage
Forum Développeur - Administration serveur, programmation et base de données > Programmation > xHTML et CSS
chbruno
Bonjour,

Dans mon site j'ai une page en polonais : je mets l'encodage ci-dessous pour que les caractères spéciaux polonais s'affichent correctement...

CODE
<?xml version="1.0" encoding="iso-8859-2"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>rezrzeze</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />


Lorque je joue mon site en local, tout s'affiche bien mais lorque je le joue en ligne, les caractères spéciaux s'affichent mal.


ET lorque je suis sur ma page en polonais et que je regarde dans mon navigateur -> affichage -> codage, j'ai "alphabet occidental" alors que qd je le joue en local j'ai "europe central"


:?: :?:
chbruno
chbruno
bon, ca doit venir de la config de mon serveur car je viens de tester sur deux autres serveurs et ca marche....

Mais si qqn connait les paramtres à modifier ???
chbruno
voila c equ'il y a dans mon httpd.conf (apache 2)

CODE


ForceLanguagePriority Prefer Fallback



AddDefaultCharset ISO-8859-1



AddCharset ISO-8859-1  .iso8859-1  .latin1

AddCharset ISO-8859-2  .iso8859-2  .latin2 .cen

AddCharset ISO-8859-3  .iso8859-3  .latin3

AddCharset ISO-8859-4  .iso8859-4  .latin4

AddCharset ISO-8859-5  .iso8859-5  .latin5 .cyr .iso-ru

AddCharset ISO-8859-6  .iso8859-6  .latin6 .arb

AddCharset ISO-8859-7  .iso8859-7  .latin7 .grk

AddCharset ISO-8859-8  .iso8859-8  .latin8 .heb

AddCharset ISO-8859-9  .iso8859-9  .latin9 .trk

AddCharset ISO-2022-JP .iso2022-jp .jis

AddCharset ISO-2022-KR .iso2022-kr .kis

AddCharset ISO-2022-CN .iso2022-cn .cis

AddCharset Big5        .Big5       .big5

# For russian, more than one charset is used (depends on client, mostly):

AddCharset WINDOWS-1251 .cp-1251   .win-1251

AddCharset CP866       .cp866

AddCharset KOI8-r      .koi8-r .koi8-ru

AddCharset KOI8-ru     .koi8-uk .ua

AddCharset ISO-10646-UCS-2 .ucs2

AddCharset ISO-10646-UCS-4 .ucs4

AddCharset UTF-8       .utf8



AddCharset GB2312      .gb2312 .gb

AddCharset utf-7       .utf7

AddCharset utf-8       .utf8

AddCharset big5        .big5 .b5

AddCharset EUC-TW      .euc-tw

AddCharset EUC-JP      .euc-jp

AddCharset EUC-KR      .euc-kr

AddCharset shift_jis   .sjis

chbruno
PB résolu,

dans le httpd.conf, il fallait mettre :

AddDefaultCharset Off
au lieu de
AddDefaultCharset ISO-8859-1

a+

chbruno :wink:
Neity
Je remonte ce topic car il correspond un peu à mon problème :
Je dois faire une version polonaise d'un site et j'ai un soucis d'affichage des textes :

Dans ma base de données j'ai un champ comme ça :
CITATION
label_pl varchar(255) utf8_general_ci


Avec du texte comme ça :
CITATION
Sprzedaż bezpośrednia, sieci sprzedaży, niezależny sprzedawca bezpośredni


Mais sur le site, quand j'affiche cette valeur, j'obtiens :
CITATION
Sprzeda? bezpo?rednia, sieci sprzeda?y, niezale?ny sprzedawca bezpo?redni


Voilà les paramètres que j'ai tenté de régler :
CITATION
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//PL" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<meta http-equiv="content-language" content="pl">


Dans le httpd.conf j'ai :
CITATION
AddLanguage pl .po
AddCharset ISO-8859-2 .iso-pl


et pas de DefaultCharset



J'ai aussi essayé l'iso-8859-16 mais rien n'y fait. Je m'y prends peut-être mal ? Vu que dans ce post un simple copier-coller a l'air de marcher, et que quand je prends de la base de données de mon site ça s'affiche mal?
kaktusss
Hello
Peut-être remplacer
CODE
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">

par
CODE
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

?

le problème vient du fait que dans ta base de données le texte est en UTF-8
en php il existe la fonction UTF8_decode() mais je ne sais pas si ça fonctionnera car elle convertit UTF-8 en ISO-8859-1 et non ISO-8859-2

tiens-nous au courant wink.gif
Neity
Je pense que ça vient de l'encodage dans ma BDD oui mais utf8_polish_ci n'arrange rien, je vais essayer latin2_polish ou un truc comme ça.

Pour le charset j'ai malheureusment essayé sans résultat, je continue de chercher
_matthieu
arg, j'ai le même problème....

tout est bon via phpmyadmin, j'ai mis les champs en ucs2_polish_ci
mais dans la page, pour l'affichage des textes, ça foire...

et ça marche encore moins bien avec l'ajout de
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

donc je ne sais pas non plus quoi faire...

tu as trouvé une solution Neity ?
_matthieu
la modification du type de codage dans la base de donnée ne change rien (utf8_polish_ci, utf8_unicode_ci, ucs2_polish_ci : même résultats)

ça ne doit pas être un problème de configuration de serveur puisque les pages de phpmyadmin, sur le même espace, s'affichent correctement
Neity
Non, j'ai essayé aussi plusieurs encodages, je me suis finalement posé sur utf8_unicode_ci pour avoir le truc le plus global possible (enfin je crois).
Idem pour le charset HTML, je me suis mis sur utf8.

J'ai enregistré ma page .php en UTF8 donc maintenant si je fais :
CODE
echo "Twoje kody dostępu zostały odrzucone";

J'obtiens bien un affichage des caractères.

Mais depuis la BDD niet.
A noter que même dans le code source c'est "?", pas un quelconque encodage HTML. Donc ça foire quelque part mais je ne vois pas où. Après tout dans PHPMyAdmin j'ai bien les caractères, et c'est rien d'autre qu'un site internet non?.

Le seul caractère que j'arrive à avoir c'est le "ó" si je fais utf8_encode();

Ca me gave là, je ne trouve pas un seul topic résolu sur ce sujet. sad.gif
Neity
Yeeeehaa !
Trouvé smile.gif

Il faut ajouter en début de script :
CODE
mysql_query("SET CHARACTER SET 'utf8'");


Sinon on est en latin1 par défaut en PHP.


Apparement ça peut se regler aussi dans la conf PHP :

CITATION
if you think "set names utf8" for each connection is too trouble, you can modify my.cnf of MySQL to solve the problem forever. In my.cnf, add the line "default-character-set=utf8" in both [mysqld] and [client] sections:

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8

The MySQL will use utf8 after you restart it.


Source : http://fr.php.net/mysql_client_encoding

A faire avec le charset=utf8 dans le HTML je précise, sinon ça foire. smile.gif
_matthieu
icon_eek.gif

ça marche

génial


merci beaucoup Neity


tu as trouvé cela où finalement? car en feffet on n'était pas les seuls coincés avec ça...
Neity
Sur le lien que j'ai mis en source. wink.gif

Attentions aux problèmes liés :
Les mails sont buggés en UTF8, j'ai pas encore trouvé de reglage pour corriger ça (ça se trouve c'est carrément dans la messagerie (outlook par exemple) qu'il faut mettre lecture en UTF8 :x
Je regarderai à ça.

Ca bug aussi dans les "alt". En FR, je fais echo "...<img alt=\"".htmlentities($mon_texte)."\" ..."; mais ça bug en PL. A voir
Neity
Existe-t-il un moyen de mettre un span, td, div ou je ne sais quoi dans un encodage particulier, et différent de la page?

J'ai essayé :
CODE
echo "<td class='".$key."' contentType='text/html; charset=utf-8'>".$value."</td>";


Mais visiblement ça ne marche pas et le td s'affiche en iso-truc-machin.
J'ai lu quelque part qu'on pouvait quand je recherchais la solution à mon problème décrit dans les précédents post, mais impossible de retrouver le bon truc. :/
JaH_LiveS
Bonjour,

L'encodage est choisi pour l'ensemble d'un document et non ses éléments. wink.gif

Quelques bonnes sources:
http://www.w3.org/International/O-charset
http://gedcom-parse.sourceforge.net/doc/encoding.html
http://openweb.eu.org/articles/jeux_caracteres/
Neity
Donc en fait il vaut mieux tout encoder en utf-8 si on veut afficher du français, du polonais, du chinois et autre bazar sur la même page?
Neity
Je remets à jour le topic pour du Chinois cette fois.

J'ai du texte dans ma BDD, en "utf8_unicode_ci", si je fais un
CITATION
echo $monTexteChinois;
ça marche bien.
Mais si je veux mettre ce texte Chinois dans une bulle genre ALT, ou TITLE, ça me mets des [][][][][] (des carrés. Dans la source ça donne :
CITATION
中è¯äººæ°‘共和國


Ma méthode d'affichage :
CITATION
img alt=\"".htmlentities($monTexteChinois, ENT_COMPAT, "UTF-8")."\" [...]

Ca marche bien pour du Polonais et tout, mais visiblement pas pour du chinois. Mais ça fonctionne dans un simple "echo". Pourquoi, et comment résoudre sans bidouille? (à savoir pas de transformation manuelle en code HTML ou ASCII ou je ne sais quoi)
Neity
Aux temps pour moi, c'est résolu. Pour voir il fallait installer le langage Chinois sur Windows (sur le PC client). Ce que j'ai fait.
Mais pour compléter l'installation on m'avait proposé de redémarrer l'ordinateur, ce que je n'avais pas fait.

Après redémarrage, les caractères s'affichent bien avec htmlentities. smile.gif
yanovitch
salut à tous,

il y a aussi une manipulation à faire sur l'enregsitrement du fichier lui-même (en tout cas ça m'a aidé à différents moments).
Je donne un exemple : si vous utilisez dream et que l'encodage des pages est configuré par défaut en iso-8859-1, il va enregistrer toutes les pages dans un mode (ANSI je crois). Ouvrez-le fichier dans le bloc-notes par exemple et en faisant "enregistrer sous..." vous trouverez une combo de "codage". Si vous voulez un vrai fichier UTF-8, il faudra le réenregistrer comme ça.
Bien d'autres éditeurs de texte le font, ça m'a notamment sauvé avec des dumps sql exporté depuis phpmyadmin, il m'est arrivé de voir certains caractères réapparaître ...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.