Avatar billede razmuz_dk Nybegynder
24. august 2006 - 11:59 Der er 17 kommentarer og
1 løsning

XMLHttpRequest og danske bogstaver

Hej eksperter,

Når jeg henter noget via min XMLHttpRequest der indeholder bogstaverne æ, ø eller å outputtes som spørgsmålstegn. Jeg har forsøgt at ændre kaldets header til encoding=UTF-8, men lige lidt virker det.

Jeg har forsøgt med lidt forskelligt, fx:
xmlHttpReq.setRequestHeader("Content-type", "charset=UTF-8");

xmlHttpReq.setRequestHeader("Content-type", "text/html; charset=UTF-8");

Hvad gør jeg forkert? Eller rettere: hvordan får jeg æøå-bogstaver til at virke i min ajax-applikation?

På forhånd tak
Avatar billede horsmark Nybegynder
24. august 2006 - 13:02 #1
den side der skal kaldes af ajax skal være således:
Content-Type:text/xml
<?xml version='1.0' encoding='ISO-8859-1'?>
...dit xml
Avatar billede horsmark Nybegynder
24. august 2006 - 13:03 #2
..eller

xmlHttpReq..overrideMimeType('text/xml')
Avatar billede mclemens Nybegynder
24. august 2006 - 13:03 #3
husk at serveren skal levere dokumentet med den rigtige mime-type også...
Avatar billede horsmark Nybegynder
24. august 2006 - 13:04 #4
hov xmlHttpReq.overrideMimeType('text/xml')
Avatar billede mclemens Nybegynder
24. august 2006 - 13:07 #5
Avatar billede mclemens Nybegynder
24. august 2006 - 13:10 #6
((( http://developer.mozilla.org/en/docs/AJAX:Getting_Started ... Se evt. noter til step 3 )))
Avatar billede razmuz_dk Nybegynder
24. august 2006 - 13:10 #7
Så har jeg sat følgende i min xmp-fil:
xmlHttpReq.overrideMimeType('text/xml');

... og følgende øverst i min rc-fil:
header("Content-type: text/xml");

Stadig uden held...

Det skal siges at svaret ikke udleveres i AJAX, men i JSon eller nogle gange i ren tekst.
Avatar billede mclemens Nybegynder
24. august 2006 - 13:13 #8
Det hjælper ikke med en af dem her istedet ?
header('content-type: text/css;charset=iso-8859-1');
eller header('content-type: text/css;charset=utf-8');
... vælg den som passer med det filformat du gemmer i ...
- ellers kunne du måske url-encode og så decode i din js ...
(har ikke leget meget med ajax :/ )
Avatar billede mclemens Nybegynder
24. august 2006 - 13:14 #9
^ - ups... (dumme copy'n'paste fra min php css fil)
header('content-type: text/xmlcharset=iso-8859-1');
eller header('content-type: text/xml;charset=utf-8');
Avatar billede mclemens Nybegynder
24. august 2006 - 13:15 #10
... der forsvandt så lige et ; i den ende :D
Avatar billede mclemens Nybegynder
24. august 2006 - 14:05 #11
Denne virker fint hos mig ...





<?php

/* request filen */

header('content-type:text/xml;charset=iso-8859-1');
if(isset($_GET['t']))echo"123ÆØÅæøå帿ŨÆ321";



else{

/* test filen */

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>...</title>


</head><body>
<script type="text/javascript" language="javascript">
    function makeRequest(url) {
        var http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // See note below about this line
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        http_request.onreadystatechange = function() { alertContents(http_request); };
        http_request.open('GET', url, true);
        http_request.send(null);

    }

    function alertContents(http_request) {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                alert(http_request.responseText);
            } else {
                alert('There was a problem with the request.');
            }
        }

    }
</script>
<span
    style="cursor: pointer; text-decoration: underline"
    onclick="makeRequest('<?php echo $PHP_SELF; ?>?t='+new Date().getTime())">
        Make a request
</span>
</body></html>
<?php } ?>
Avatar billede mclemens Nybegynder
24. august 2006 - 14:06 #12
( samlet i en fil for testens skyld ... navngiv som et eller andet .php )
Avatar billede mclemens Nybegynder
24. august 2006 - 14:11 #13
rettelse:


/* request filen */

header('content-type:text/xml;charset=iso-8859-1');
if(isset($_GET['t']))echo"123ÆØÅæøå帿ŨÆ321";


skiftes til:


if(isset($_GET['t'])){
/* request filen */
header('content-type:text/xml;charset=iso-8859-1');

echo"123ÆØÅæøå帿ŨÆ321";
}



... og den virker også fint hvis jeg skifte iso-8859-1 i dokumentet til utf-8 og istedet gemmer filen som utf-8 kodning (bruger notesblok og vælger gem som og skifter kodningen...)
Avatar billede razmuz_dk Nybegynder
24. august 2006 - 14:19 #14
header('content-type:text/xml;charset=iso-8859-1');

... did the trick! :-)

Nu ved jeg ikke afsindig meget om charsets/encoding - men hvornår er det man bør bruge utf-8 og hvornår bør man bruge iso-8859-1?

Men uanset hvad, smid et svar mclemens :)
Avatar billede mclemens Nybegynder
24. august 2006 - 14:23 #15
Du bør så vidt jeg ved bruge utf-8 ... men synes dog
selv at det plejer at drille mig (til tider) :/
... Her er lige et svar :o)
Avatar billede mclemens Nybegynder
24. august 2006 - 14:25 #16
et hurtigt link jeg fandt ved søgning på "iso-8859-1 utf-8"
http://www.ae35-unit.dk/standard/encoding.html
(har ikke læst - da jeg er på vej ud af døren ...)
Avatar billede razmuz_dk Nybegynder
24. august 2006 - 14:30 #17
Takker :-)
Avatar billede mclemens Nybegynder
24. august 2006 - 16:19 #18
Velbekom, og tak for point :)
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