Avatar billede kongfjong Nybegynder
14. december 2006 - 10:58 Der er 17 kommentarer og
1 løsning

Hvordan får jeg den til at udskrive danske tegn ordentligt?

Jeg har et problem omkring udskriving af æ, ø og å.

Har lavet noget ajax, eller noget der ligner, hvor jeg har en onblur-event på et felt, som sætter en asynkron kommunikation i gang mellem klient og server, hvor den henter adresse informationer om en bruger ud fra et nummer.

Problemet er, at når jeg vil udskrive den tekst jeg får tilbage fra php-filen som bliver kaldt vha. den asynkrone http-request, udskrives æ, ø og å, som meget sære tegn i FF og som andre sære tegn i IE:)

Jeg har forsøgt at sætte følgende doctype og meta-tags i koden, uden held:

<!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" xml:lang="da" lang="da">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Jeg kan ydermere se, hvis jeg kalder php-filen alene, at den faktisk returnerner bogstaverne korrekt som de står i db'en, så det må være på klienten den går galt...

Hvad kan problemet være?
Avatar billede olebole Juniormester
14. december 2006 - 11:11 #1
<ole>

Hele kæden (DB, server- og klient-kode) skal være encoded til samme tegnsæt. Det er nok problemet  =)

Prøv at åbne filen i Notepad - vælg 'Gem som...'.
Nederst, hvor der står 'Kodning', skal 'ANSI' være valgt, når du bruger 'iso-8859-1'.
Er det ikke tilfældet, ændrer du det.

Hvordan kalder du i øvrigt PHP-filen alene ... og derved finder udaf, at problemet skulle ligge på klienten?  =)

/mvh
</bole>
Avatar billede kongfjong Nybegynder
14. december 2006 - 11:12 #2
Hehe øhm går bare ind på stien med filen, ligesom man ville kalde en alm php fil, f.eks. www.minside.dk/index.php:)

Kigger på det andet:)
Avatar billede kongfjong Nybegynder
14. december 2006 - 11:20 #3
Synes det er sært. I filen hvor input-feltet ligger, som jeg kalder eventen på, er der som sagt sat de ovennævnte metatags og andet ind. I den fil jeg har jeg jo så en reference til js-fil, og hvis jeg prøver at lave en simpel funktion, som alerter 'æøå' på onblur på input-feltet, skriver den bogstaverne fint.

Det er som om det går galt, når jeg kommer til

results = http.responseText.split('+');
Avatar billede kongfjong Nybegynder
14. december 2006 - 11:25 #4
Har afprøvet det med at gemme filen, gik ud fra du mente js-filen, i notepad, det hjalp desværre ikke...
Avatar billede kongfjong Nybegynder
14. december 2006 - 11:27 #5
Og sådan set heller ikke, hvis det var siden, hvorfra scriptet kaldes:)
Avatar billede kongfjong Nybegynder
14. december 2006 - 11:28 #6
Kan det have noget at gøre med Kollation i mySQL? Den er pt. sat til latin1_danish_ci...
Avatar billede olebole Juniormester
14. december 2006 - 11:34 #7
Prøv at lægge et link til siden
Avatar billede olebole Juniormester
14. december 2006 - 11:36 #8
Hvordan adskiller det, du beskriver i (14/12-2006 11:12:55) sig fra det, du forsøger med siden i dette spørgsmål? Jeg forstår ikke meget af, hvad du skriver  =)
Avatar billede kongfjong Nybegynder
14. december 2006 - 11:47 #9
http://martin8.wi8.ots.dk/WebIntegrator/loanregister/loan.php?action=registrer

brugernavn: martin
kode: 123456

Gå over i feltet Elevnummer og tast 98751:)
Avatar billede kongfjong Nybegynder
14. december 2006 - 11:49 #10
http://martin8.wi8.ots.dk/WebIntegrator/loanregister/index.php det skulle have været det her link...

Når du så har logget ind, så skal du vælge Registrér udlån i menuen:)
Avatar billede olebole Juniormester
14. december 2006 - 13:20 #11
Så må du give mig et link, hvor jeg kan logge ind - og ikke får en JS-fejl i stedet  ;o)
Avatar billede kongfjong Nybegynder
14. december 2006 - 18:52 #12
js fejl? På http://martin8.wi8.ots.dk/WebIntegrator/loanregister/index.php skal du logge ind med de brugernavn/kodeord jeg skrev før:)
Avatar billede kongfjong Nybegynder
15. december 2006 - 08:54 #13
http://martin8.wi8.ots.dk/WebIntegrator/loanregister/getComputerModels.php?elevnummer=98751

Prøv at klikke der. Der vil man se, at den faktisk giver det rigtige tegn, når man trækker ud fra tabellen.

Character-set i db'en er Latin1_danish_ci, og i loan.php er der sat både denne:

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

og denne:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da" lang="da">
Avatar billede kongfjong Nybegynder
15. december 2006 - 08:54 #14
Smider lige mit javascript her:

function startUpdateElev() {

    var number = document.getElementById('reg_loan_elevnummer').value;
    //alert('æøå');

    http.open("GET", 'getComputerModels.php?elevnummer=' + number, true);
    http.onreadystatechange = endUpdateElev;
    http.send(null);
}

function endUpdateElev() {

    if (http.readyState == 4) {
        results = http.responseText.split('+');
        //alert(results[2]);

        var fornavn = document.getElementById('reg_loan_fornavn');
        var efternavn = document.getElementById('reg_loan_efternavn');
        var adresse = document.getElementById('reg_loan_adresse');
        var postnr = document.getElementById('reg_loan_postnr');
        var by = document.getElementById('reg_loan_by');
        var cpr = document.getElementById('reg_loan_cpr');
        var email = document.getElementById('reg_loan_email');
        var stamkl = document.getElementById('reg_loan_stamklasse');
       
        fornavn.value = results[0];
        efternavn.value = results[1];
        adresse.value = results[2];
        postnr.value = results[3];
        by.value = results[4];
        cpr.value = results[5];
        email.value = results[6];
        stamkl.value = results[7];
    }
}
Avatar billede kongfjong Nybegynder
15. december 2006 - 08:55 #15
Det er som om det går galt, når den kommer til

results = http.responseText.split('+');

i endUpdateElev()...
Avatar billede kongfjong Nybegynder
15. december 2006 - 10:02 #16
Så fandt jeg en løsning.

Det er åbenbart alt rigeligt, at smide en header("Content-type: text/xml; charset='iso-8859-9'"); i toppen af php-siden:)
Avatar billede olebole Juniormester
15. december 2006 - 12:02 #17
Yups ... det var, hvad jeg mente med: "Hele kæden (DB, server- og klient-kode) skal være encoded til samme tegnsæt"  ;o)
Avatar billede kongfjong Nybegynder
15. december 2006 - 20:35 #18
Hehe ja, det kan jeg forstå nu, det faldt mig bare ikke ind når nu den viste udtrækker fra db'en korrekt, når man kaldte den direkte.

Og da slet ikke, da jeg fandt ud af, at responseText, konverterede alt til UTF-8, for så kunne det jo være lige meget hvad der kom, efter min mening hehe:)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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