webForumDet fria alternativet

Include lägger till specialtecken i IE

6 svar · 750 visningar · startad av ejick

ejickMedlem sedan mars 2001895 inlägg
#1

Hej,

jag håller på att utveckla en webbplats och har ett jättekonstigt problem. Det är så att jag, delade upp, min fil index.php, till två andra, header.php och footer.php.

När jag använder

<?php include 'header.php'; ?>

tillkommer det ett tecken i IE, men inte i FF. Detta tecken syns inte i koden lokalt, men om man väljer visa källa i IE syns det, dock inte i FF.

Om jag kopierar koden som visas i FF till notepad syns specialtecknet så det beror på teckenuppsättningen i FFs visningsprogram har jag kommit fram till.

I alla fall, jag vet inte om någon haft detta problem eller kan förstå vad det handlar om. Jag blir helt snurrig eftersom det fungerar om man inte använder include. Har provat olika FTP-program men problemet kvarstår.

Det enda jag kan komma på är att jag ändrat från utf-8 till ansi och tillbaka igen.

Tacksam för hjälp :)

joserMedlem sedan mars 20021 152 inlägg
#2

När du sparar med teckenkodning utf-8 så läggs det till två byte i börjam på filen; Byte Order Mark. Med ansi, som är Windows ascii-format så läggs ingen BOM till filen.

Spara alltså filen som ansi.

red: utf-8 BOM är tre byte, det är Unicode som har två byte.

ejickMedlem sedan mars 2001895 inlägg
#3

Ah, okej, då vet jag vad det beror på i alla fall. Problemet är att sidan är på svenska och skriven med utf-8, så alla specialtecken blir felaktiga vid Ansi.

joserMedlem sedan mars 20021 152 inlägg
#4

Som vanligt gav jag bara halva svaret. ;-)

Teckenkodning i headern ska vara samma som du sparar i.

Pröva om du kan spara utan BOM i din editor.
Ange på servern att du sparar i utf-8.

ejickMedlem sedan mars 2001895 inlägg
#5

Hm, jag har redan testat att inte ta med BOM, men det gav ingen skillnad. Filen där den andra delen ska inkluderas innehåller

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Den lösning jag kan komma på nu är att ändra å, ä och ö till & aring;, & auml; och & ouml; men det vill jag helst undvika. Konstigt är att problemet bara blir vid include och inte annars.

Hänger inte rikgit med hur jag kan ange utf-8 på servern...

joserMedlem sedan mars 20021 152 inlägg
#6

AddCharset på Apache i .htaccess i katalogen där filerna ligger.

Red: default läser php filer som ISO latin1

ejickMedlem sedan mars 2001895 inlägg
#7

Jag återupptar tråden då det blivit aktuellt igen, och jag faktist inte hittat någon lösning. Jag håller på med en webbplats med samtliga sidor skrivna i utf-8 och med detta deklarerat i en meta-tag.

Jag använder flera olika php-filer som jag inkluderar, och denna metod genererar ett specialtecken (som blir en extra rad) när sidan visas. Finns det något sätt att gå runt detta eller hur gör alla andra? Man måste väl kunna använda svenska tecken och include utan att det blir fel.

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