Apache2 + Php + XmlHttpRequest = encodings problems

February 14, 2006 on 2:14 pm | In AJAX, General |

Il m’est arrivé une sacrée galère en testant une requète XmlHttpRequest (en POST) à une page PHP sous Apache2.

Quand j’envoyais des caractères speciaux, genre ‘à ‘, et bien la page qui recevait ces infos (appellons la rec.php) encodait ces caractères en ‘àƒ’ par exemple. Croyant à un probleme de déclaration d’encodage je passe deux heures à faire de multiples tests en specifiant les encodages de tous les cotés :

dans le html <meta http-equiv=“Content-Type” content=“text/html; charset=iso-8859-1″ />
ou en php <?header(“Content-Type: text/html; charset=iso-8859-1″); ?>
ou dans le parametre de XmlHttpRequest : objHTTP.SetRequestHeader(“Content-Type”, “application/x-www-form-urlencoded; charset=iso-8859-1″)

A court d’idées, je fais un test sur un serveur Apache 1, je constate alors que ca marche correctement, même sans spécifier les encodages.

J’en déduis donc que cela vient d’un option de Apache2; Au bout de quelques recherches Google, je tombe sur le BugTrack d’Apache qui m’apprend que le httpd.conf d’Apache a une nouvelle option activée : AddDefaultCharset; option qui force chaque page en iso-8859-1.

En remplaceant la ligne en question par :

AddDefaultCharset Off

Tous mes problème sont été résolus, accents et sigles Euro acceptés, sans aucune spécification de header ou d’encodage à qulque niveau que ce soit…. Grrrrr….

6 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Voici une solution … bĂȘte et mĂ©chante mais qui n’oblige pas Ă toucher Ă la config httpd.conf Ă placer sur le serveur php :

    $hello = utf8_encode(”RĂ©solu” ) ;

    Comment by Serge — 29 May 2006 #

  2. Ouah merci sa fait 2 heures que je cherche et ta solution marche nickel tout marche.
    Merci 10000 fois ^^

    Comment by BarTo28 — 8 June 2006 #

  3. j’ai utilisĂ© une mĂ©thode similaire Ă celle de Serge, mais en mettant
    $_POST = array_map(utf8_decode, $_POST); au tout début du fichier php appelé par Ajax et httpxmlrequest.
    Ca me permet de garder le reste du code intact et compatible entre les appels avec ou sans javascript

    Comment by flan — 28 June 2006 #

  4. trĂšs bonne feinte ! merci !!

    Comment by Juju — 28 June 2006 #

  5. merci pour cette astuce qui m’a bien servie

    Comment by laurent — 21 August 2007 #

  6. merci, merci, merci, merci, merci, merci, merci, merci !!
    Cela faisait plusieurs heures que je cherchais en vain une solution
    Génial cela fonctionne du feu de dieu ! :)

    Encore merci

    PS: pour info c’est valable aussi pour $_GET = array_map(utf8_decode, $_GET); ……..Evidement!!:)

    Comment by julie — 22 November 2007 #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^