![]() |
Hejsan.
Jag och en kompis håller på att utveckla ett litet projekt men vi har stött på ett litet problem. Sidan är UTF8. Databasen är UTF8 och XMLen (som genereras mha PHP från databasen) är UTF8. (xml används utav några ajaxfunktioner) 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"). Finns det något sätt att få ordning på detta? |
PHP har stöd för att översätta mellan olika charset, men hur bra det blir i praktiken vet jag inte. Ett annan väg att gå är att översätta till motsvarande url_encode (typ %xx) eller html_entities (typ ä). Fördelen med dessa är att de oftast tolkas riktigt av webbläsaren oavsett charset på sidan. Ibland måste detta göras i flera steg eftersom utf8 innehåller två tecken för varje specialtecken.
Kan man inte speca vilket format man vill ha resultatet i på en live-sökning? |
Förstår inte vad probelmet är. Ni kör ju UTF8 rakt igenom. Ni måste råkat tabba er någon stanns helt enkelt. Gissningsvis i Javascript-koden.
För övrigt kommer PHP 6 ha fullt stöd för multibyte-tecken (dvs. stöd för UTF8). |
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:
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']); Edit: IE6 krånglar om du sätter: Kod:
header("Content-Type: text/xml; charset=utf-8"); Kod:
header("Content-Type: text/xml"); |
Alla tider är GMT +2. Klockan är nu 01:07. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson