Bonjour à tous,

Je dois développer un site full flash en russe, géré dynamiquement via un CMS. Je vais donc utiliser PHP / MySQL et XML.

Voici mes principales questions :

- quel encodage pour la base de données (utf8_general_ci ?)

Je précise que les fichiers PHP qui créent le XML sont encodés en UTF8.

Après quelques essais, j'ai remarqué que :

- lorsque je créé le XML à la main, que je l'uploade sur le serveur, Flash interprète correctement les caractères russes

- lorsque le XML est créé via PHP, Flash n'interprète pas correctement les caractères russes

- si je prends ce même XML, que je l'enregistre sur mon Mac au format UTF8, que je l'uploade de nouveau, Flash interprète bien les caractères russes

J'en déduis que c'est bien un problème au niveau de l'encodage du XML, mais je ne sais pas comment régler ce problème.

Enfin, je précise que lorsque j'ouvre le XML dans un navigateur, les caractères russes apparaissent parfaitement...

Merci pour votre aide.
providence a écrit :
- quel encodage pour la base de données (utf8_general_ci ?)

utf8_general_ci n'est pas un encodage, mais un interclassement. L'encodage correspondant est UTF-8.

providence a écrit :
Enfin, je précise que lorsque j'ouvre le XML dans un navigateur, les caractères russes apparaissent parfaitement...

Avec quel encodage déclaré 1) par le serveur, dans les en-têtes HTTP, 2) dans le code source du XML (via la déclaration XML)? Et quel encodage utilisé au final par le navigateur pour l'affichage du contenu (Affichage > Encodage des caractères > ...)?
Dans le code source du XML, j'ai bien :

<?xml version="1.0" encoding="utf-8" ?>


Et sous Safari, l'encodage est bien UTF8.

Tous les fichiers permettant la génération du XML sont encodés en UTF8 également.

Edit :

Quand j'ouvre mon XML généré par PHP avec Web Sniffer, j'ai :

HTTP Request Header

Connect to 194.242.114.4 on port 80 ... ok

GET /ru/xml/produits.xml HTTP/1.1[CRLF]
Connection: close[CRLF]
User-Agent: Web-sniffer/1.0.28 (+http://web-sniffer.net/)[CRLF]
Accept-Encoding: gzip[CRLF]
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]
Cache-Control: no[CRLF]
Accept-Language: de,en;q=0.7,en-us;q=0.3[CRLF]
Referer:  http://web-sniffer.net/[CRLF]
 
[CRLF]


Et les caractères russes ne passent pas (ils s'affichent comme dans mon flash) :

?xml version="1.0" encoding="utf-8" ?>
<produits>
  <rubrique ssrub ="nettoyants">
    <produit>
      <nom><![CDATA[Новости бизнеса, политики, экономики, недвижимости]]></nom>
      <presentation><![CDATA[Новости бизнеса, политики, экономики, недвижимости]]></presentation>
      <definition><![CDATA[Новости бизнеса, политики, экономики, недвижимости]]></definition>
      <utilisation><![CDATA[Новости бизнеса, политики, экономики, недвижимости]]></utilisation>
      <photo_petit>http://dev.evidensdebeaute.com/images/bougie.png</photo_petit>
      <photo_grand>http://dev.evidensdebeaute.com/images/bougie.jpg</photo_grand>
      <prix>0</prix>
      <nouveau>non</nouveau>
    </produit>
  </rubrique>
  <rubrique ssrub ="quotidiens">
  </rubrique>
  <rubrique ssrub ="spécifiques">
  </rubrique>
  <rubrique ssrub ="anti-tâches">
  </rubrique>
  <rubrique ssrub ="miscellanées">
  </rubrique>
  <rubrique ssrub ="nouveautés">
  </rubrique>
</produits>

Modifié par providence (17 Feb 2009 - 09:34)
Pour les en-têtes HTTP, il s'agissait des HTTP Response Headers (réponse du serveur), pas des HTTP Request Headers envoyés par ton navigateur.
Florent V. a écrit :
Pour les en-têtes HTTP, il s'agissait des HTTP Response Headers (réponse du serveur), pas des HTTP Request Headers envoyés par ton navigateur.


Voilà ce que j'obtiens avec un phpinfo.

HTTP Response Headers
X-Powered-By	PHP/5.2.0-8+etch13
Keep-Alive	timeout=15, max=60
Connection	Keep-Alive
Transfer-Encoding	chunked
Content-Type	text/html

providence a écrit :
Voilà ce que j'obtiens avec un phpinfo.

Oui mais ça c'est les en-têtes HTTP envoyés par le serveur pour la page HTML générée par ton script PHP avec le phpinfo.

Bon alors le processus c'est ça:
1. Installer Firefox si ce n'est pas fait. Installer l'extension Web Developer. Redémarrer Firefox.
2. Ouvrir le flux XML dans Firefox. Tu dois avoir http://example.org/blabla/news.xml ou http://example.org/blabla/rss.php ou quelque chose du genre dans la barre d'adresse du navigateur.
3. Avec la barre d'outils Web Developer, faire «Information > En-têtes HTTP (réponses)»
4. Copier-coller ici la ligne «Content-Type». Ça devrait normalement être Content-Type: application/rss+xml; charset=UTF-8 pour du RSS 2 (pas text/xml pour le type MIME, normalement, même si ça devrait passer...).