Avatar billede lone_a_p Praktikant
06. april 2009 - 13:06 Der er 5 kommentarer og
1 løsning

xajax æ, ø og å

Kære eksperter,

Jeg er ved at forsøge mig frem med ajax ... eller dvs. xajax.

Er der nogen der kender til dette?

Jeg kan få scriptet til at hente fra databasen:

function brugere($key) {
    $sql = 'SELECT myCol FROM myTable WHERE myCol LIKE \'%'.$key.'%\'';
    .... osv ...
}

Jeg sender $key videre fra en selectbox:
    <option value="i">i</option>
    <option value="ø">ø</option>

Den giver rigtigt output ved i men ikke ved ø.

Jeg er ret sikker på, at det er noget charset-halløj det er galt med, men jeg kan simpelthen ikke få det til at virke.

hvis jeg skriver $key = "ø" inde i funktionen får jeg det rigtige output, så det ligger i overførslen af tegnene æ, ø og å fra select til funktion.

Er der nogen der kan se, hvor fejlen ligger?

Mvh Lone
Avatar billede Slater Ekspert
06. april 2009 - 13:09 #1
AJAX er 127 bit, så du kan ikke få det til at sende specielle tegn. Måden at gøre det på, er normalt at kode alle strenge med htmlentities() funktionen i PHP, så ø bliver lavet om til &oslash; osv.

Der er nogle få tilfælde hvor det ikke virker, og der må man så selv oversætte tilbage til forståelige tegn i Javascript, når det er sendt.
Avatar billede lone_a_p Praktikant
06. april 2009 - 13:14 #2
her sidder man og har brugt en evighed for at finde et svar ... så går man endelig til eksperten

... når man så går tilbage til sit eget script og laver en lille bitte ændring ... så VUPTI

... nå, men need no help, det var noget charset...

Til andre med samme problem:
brug $xajax->setFlag("decodeUTF8Input",true);
frem for $xajax->configure('decodeUTF8input', false);

så virker det ;)
Avatar billede Slater Ekspert
06. april 2009 - 13:15 #3
Ah, så xajax kan selv gøre det. Det er jo sådan set også praktisk nok.
Avatar billede lone_a_p Praktikant
06. april 2009 - 13:16 #4
arh, nu så jeg ikke, at der var kommet et svar.

Beklager at jeg tog pointene selv, uddeler ellers normalt bare for deltagelse ... men løsningen er fundet.

Jeg behøver ikke bruge htmlentities() ... var ellers den vej, hvor noget af det virkede og alligevel ikke det hele :-/
Avatar billede Slater Ekspert
06. april 2009 - 13:21 #5
Det er helt fint - jeg bruger ikke selv Xajax, og vidste ikke den kunne finde ud af at gøre det selv. Men selve AJAX-protokollen kan altså ikke transportere tegn med værdier over 127. Jeg skrev forresten forkert først, den er naturligvis ikke 127 bit, men 7-bit - hvilket vil sige den går fra 0-127.
Avatar billede lone_a_p Praktikant
06. april 2009 - 14:38 #6
ok tak - det skulle næsten ikke undre mig, hvis ikke jeg stødte på det på et eller andet tidspunkt, nu hvor vi er så heldige at have 3 ekstra bogstaver i alfabetet ;-)
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