Avatar billede pezz Novice
25. marts 2009 - 00:06 Der er 3 kommentarer og
1 løsning

AJAX: Æ, ø og å driller.. På trods af at alt kører UTF-8

Heysa, efter utallige googlinger har jeg stadig et problem med æ, ø og å - de vises ikke korrekt. Jeg har rettet problemet, men vil høre om der findes andre løsninger.. Noget jeg har overset måske?

Jeg henter vha. XMLHttpRequest() et navn på en by, fra en php fil, via POST. PHP filen der kaldes echo'er bare byens navn ud, og intet andet. Den måde jeg har løst problemet, er ved at køre byens navn igennem php's utf8_encode() funktion først - Men mon ikke jeg har overset noget fundamentalt andetsteds?

Jeg kører nyeste version af WAMP server til Windows (Apache + PHP).

Alle involverede filer på webserver er gemt som UTF-8.
Alle relevante steder er http meta content sat til: <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
MySQL databasen, og tabellen med byer/postnumre er sat til utf8_danish_ci og jeg har tripple-checket at selve by-navnene er pastet korrekt ind.
I .htaccess har jeg tilføjet 'AddCharset UTF-8 .php'.
I php.ini har jeg sat 'default_charset = "utf-8"'.

Og så 50 "bonus" point til den der kan finde fejlen i følgende kode, der gør, at det ikke virker i Internet Snotsplorer:

function get_city_from_zip(value,which) {
    var http;
    try {  http = new ActiveXObject('Msxml2.XMLHTTP');  }
    catch (e)  {
        try {  http = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2)  {
          try {  http = new XMLHttpRequest();    }
          catch (e3) {  http = false;  }
        }
    }
    http.onreadystatechange = function() {
        if(http.readyState == 4) {
              if(http.status == 200) {
                if (which == 1) document.next.city.value = http.responseText;
                if (which == 2) document.next.other_city.value = http.responseText;
              }else {
                document.ajax.dyn='Error code ' + http.status;
              }   
        }
    };
    if (value.length == 4) {
        var params = 'zip='+value;
        http.open('POST', 'zip_lookup/', true);
        http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        http.setRequestHeader('Content-length', params.length);
        http.setRequestHeader('Connection', 'close');                       
        http.send(params);
    }
}
Avatar billede showsource Seniormester
25. marts 2009 - 04:33 #1
"køre byens navn igennem php's utf8_encode() funktion først"
Har du prøvet at lade være med det ?
Avatar billede pezz Novice
25. marts 2009 - 04:50 #2
Ja, så sker fejlen. At bruge utf8_encode() var jo netop min egen 'klodsede' løsning. Uden den kan jeg ikke få æ,ø,å til at virke.
Avatar billede pezz Novice
25. marts 2009 - 05:01 #3
Glemte at skrive i mit originale indlæg, at jeg også har sat 'mysql_set_charset("utf8",$connection);' i min database php conf fil.
Avatar billede pezz Novice
01. maj 2010 - 03:05 #4
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester