webForumDet fria alternativet

Ajax - ÅÄÖ!!!

6 svar · 732 visningar · startad av learn

learnMedlem sedan jan. 20051 130 inlägg
#1

Jag hämtar en PHP-fil m.h.a. AJAX vilket funkar finfint bortsett ifrån att alla å,ä och ö blir konstiga symboler... inkluderar jag samma fil m.h.a. "include 'fil.php'" så ser det ut som det ska...

Vad ska jag göra??

voigtann1Medlem sedan juni 20019 519 inlägg
#2

Antingen ändra du Codetypen som hämtas (UTF-8) eller kör du en replace i din php fil som ersätter å ä ö till ä osv.

GislavedMedlem sedan nov. 20041 740 inlägg
#3

Om du använder UTF-8 överallt bör det fungera fint. Kör du ISO-8859-1 på någon av sidorna?

learnMedlem sedan jan. 20051 130 inlägg
#4

Gislaved skrev:

Om du använder UTF-8 överallt bör det fungera fint. Kör du ISO-8859-1 på någon av sidorna?

Det är egentligen bara en sida/ramverk (index.php) som sedan inkluderar innehållet (sida1.php, sida2.php... etc). Så här ser det ut i huvudet på index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >

<head>
<title>Min sida</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="css.css" media="screen" type="text/css" />
</head>

Det finns ju således inget huvud på de andra sidorna, detta gäller även de sidor som ajax-funktionen hämtar.

Mr. N.Medlem sedan sep. 20025 507 inlägg
#5

Glöm inte att headern i din XML måste vara av rätt typ också, t ex <?xml version="1.0" encoding="iso-8859-1"?>.
Eller du kanske hämtar färdigformaterad HTML?

learnMedlem sedan jan. 20051 130 inlägg
#6

Hmm, om jag förstår din fråga rätt så är svaret Ja, de PHP-filer som hämtas med ajax innehåller "färdig" HTML. Men det finns ju inget som berättar vad filen innehåller, eftersom den inte har något huvud...

TroxyMedlem sedan mars 20041 505 inlägg
#7

XmlHttpRequest (Ajax) skickar data från webbläsaren som UTF-8, punkt. Det går tyvärr inte att kringgå.
På serversidan (i PHP-koden) måste du kunna ta emot UTF-8.
Om du kör Latin-1 kan du använda utf8_decode på alla POST/GET-variabler.
En mer avancerad lösning är Iconv som konverterar mellan andra teckenkodningar.

Däremot kan XmlHttpRequest ta emot data från webbservern som annat än UTF-8.
Så din PHP-sida kan spotta ut Latin-1 som svar, men måste kunna hantera inkommande data som UTF-8.
Om du hämtar färdig HTML-kod kan du använda en HTTP-header för att ange kodning:

header('Content-type: text/plain; charset=ISO-8859-1');

Hoppas någon blev klokare! :)

132 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)