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??
6 svar · 732 visningar · startad av learn
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??
Antingen ändra du Codetypen som hämtas (UTF-8) eller kör du en replace i din php fil som ersätter å ä ö till ä osv.
Om du använder UTF-8 överallt bör det fungera fint. Kör du ISO-8859-1 på någon av sidorna?
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.
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?
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...
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! :)