Ämne: Charset?
Visa ett inlägg
Oläst 2006-12-18, 03:07 #4
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Pipen: Se till att använda vettiga rubriker!! Om du inte sätter beskrivande klara rubriker så kommer folk inte ens läsa dina inlägg! Skriv vad problemet är och vilka (skript-)språk du använder. Förslag t ex: AJAX-problem: åäö med utf-8 (med PHP)

Citat:
Originally posted by Pipen@Nov 19 2006, 23:17
Sidan kommer rikta sig till hela världen så vi vill ha stöd för inte bara svenska tecken utan alla möjliga tecken. Problemet är att i IE så när man gör en livesearch via AJAX så inehåller den retunerade xmlfilen ett å, ä eller ö så validerar inte den för XML och det går inte att använda resultatet. I firefox så fungerar det, men å, ä och ö blir utbytta mot ett frågetecken (detta verkar göras autimatiskt utav firefoxs xml-"parser").
Vad du råkat ut för att php och/eller server är förinställd på att ta emot data som iso-8859-1.

Jag har inte riktig lurar ut var felet ligger men jag misstänker att antingen så
1. är php inställt på iso och har php råkat upptäcka att strängen är utf och har "vänligheten" att omvandla från utf till iso
eller så
2. är servern inställd på att skicka sina requester med Content-Type som iso och browsern "bollar tillbaks" ajax-requesten med samma encoding (iso) trots att den egentligen borde veta att det ska vara utf (enligt metataggen)

Egentligen borde det lösa sig om man lägger till ett
AddCharset UTF-8 .php
i .htaccess och ser till att man sätter
header("Content-Type: text/xml; charset=utf-8");
i php (och ser till att man har meta-taggar i html med content-type)

Dessvärre hjälper inget av detta… (det ger istället allehanda märkliga resultat)

Vad som är möjligt är att omvandla inkommande sträng till utf8 med
Kod:
$fixad = utf8_encode($_GET['data']);
vilket fungerar men inte känns som en heltät lösning… Och dessutom begränsar detta givetvis antalet tecken du kan ha till de västerländska vilket inte verkar räcka för dina behov. Vad du kan göra är förstås att t ex printed-quotable- eller base64-encoda allt du vill skicka till servern och decoda det där igen, men inte heller det är ju en särskilt praktisk lösning… (printed-quotable med utf-8 borde ju lämpa sig bra för detta)

Edit: IE6 krånglar om du sätter:
Kod:
header("Content-Type: text/xml; charset=utf-8");
använd bara
Kod:
header("Content-Type: text/xml");
istället (Ja, jag vet korkat. Men vad ska man göra.)
martine är inte uppkopplad   Svara med citatSvara med citat