PHP encodage ISO-8859-1

Fermé
belgikoi Messages postés 44 Date d'inscription mercredi 30 novembre 2011 Statut Membre Dernière intervention 15 octobre 2012 - 26 févr. 2012 à 16:15
 le père - 26 févr. 2012 à 21:18
Bonjour,

Je fais une application en Java qui requiert un serveur. Pour ce dernier, j'ai utilisé du PHP, c'est simple, facile, etc...

Le problème, ce sont les accents et autres caractères spéciaux...
Je ne suis pas sûr, mais il me semble que Java est encodé par défaut en ISO-8859-1, et PHP, je ne sais pas :(

Alors ma question est super simple, elle a déjà été répondue plusieurs fois même...
Comment encoder les retours de php (echo()) en ISO-8859-1 ?
Mais attention, comme je l'ai dit plus haut, le PHP n'est pas utilisé pour afficher une page Internet mais pour être lu par une application cliente en Java; donc je ne pense pas que les balises HTML soient la solution...
Pour l'UTF-8, je connais utf8_encode(), alors il y a-t-il une méthode du genre pour l'ISO-8859-1 ?

Cordialement, belgikoi.

A voir également:

3 réponses

Bonjour

Je ne sais pas ce que veut dire que PHP est encodé en ISO-8859-1 ou en UTF-8 et je ne suis pas sûr que cette façon de dire les choses ait un sens.
Si tu écris echo "héhé"; dans un script php, c'est ton éditeur de texte qui détermine si le héhé est encodé en ISO-8859-1 ou en UTF-8, pas le PHP. Et quand tu l'exécuteras dans un script, l'affichage ne sera correct que si tu as bien précisé le bon type d'encodage dans les en-têtes (ou que tu tombes par hasard sur l'encodage par défaut).
Bref, PHP ne va pas changer de lui même l'encodage d'une chaîne, Si tu lui fournis directement le bon encodage au départ, tu n'as rien de spécial à faire.
0
belgikoi Messages postés 44 Date d'inscription mercredi 30 novembre 2011 Statut Membre Dernière intervention 15 octobre 2012 6
26 févr. 2012 à 19:42
Bonjour, merci de t'intéresser à mon problème.

C'est vrai que je me suis un peu mal exprimé.

En fait, mon application cliente envoie des variables au script php.

Ce-dernier interroge une BDD et retourne le ou les résultats.

Bien sûr, il y a parfois des accents, que PHP me renvoie sous forme de points d'interrogation. Or, j'aimerai conserver ces accents...

Quand tu dis:
Si tu lui fournis directement le bon encodage au départ, tu n'as rien de spécial à faire

Est-ce que je dois modifier des paramètres dans ma base de données ? Puisque c'est ma base de données qui fourni les caractères spéciaux...
Si oui comment ? J'utilise PHPMyAdmin et mon SGBD est MySQL.
0
Si tu vois de points d'interrogation à la place des caractères accentués, c'est probablement que des données encodées en iso8859-1 (ou tout autre encodage mono octet) sont à un moment ou un autre traitées comme de l'utf-8. Ceci conduit à des codes interdits, que les logiciels traitent comme ils peuvent, souvent en les remplaçant par des points d'interrogation.

L'origine du problème peut se situer à plusieurs niveaux.
Au niveau de l'affichage par exemple : tout est correctement encodé en iso 8859-1 mais la page d'affichage a une balise meta avec charset utf-8.
Au niveau du stockage dans la base de données : les tables sont déclarées en utf-8, mais on leur donne à enregistrer des chaînes qui sont en fait encodées en iso 8859-1.
Et il y a sûrement d'autres possibilités.

c'est ma base de données qui fourni les caractères spéciaux...
Oui mais elle ne les a pas inventés. Qui les lui a fournis, et comment ?
0