Kom ihåg mig?
Home Menu

Menu


Charset?

Ämnesverktyg Visningsalternativ
Oläst 2006-11-19, 22:17 #1
Pipen Pipen är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 24
Pipen Pipen är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 24
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?
Pipen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-11-20, 10:19 #2
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
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 &auml. 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?
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-11-20, 16:32 #3
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
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).
kullervo är inte uppkopplad   Svara med citatSvara med citat
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
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 19:55.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017