mboost-dp1

Problem med æ, ø og å i php, ved brug af include()


Gå til bund
Gravatar #1 - Tang
3. apr. 2008 14:07
Jeg er ved at lave en hjemmeside, hvor jeg bruger php, som programmeringssprog...
Nu er jeg så stødt ind i det problem, at når jeg vil inkluderer noget indhold fra en txt-fil vha. include(), så bliver æ, ø og å ændret til "?". Dette spørgsmål er sikkert blevet stillet før... Men hvordan undgår jeg problemet?
Gravatar #2 - fidomuh
3. apr. 2008 14:10
#1

Du kan evt. bruge htmlspecialchars(), eller alternativt kan du saette din server ordentligt op og bruge et charset der supporterer æ ø å :)

htmlspecialchars() omdanner å til &aring fx :)
Gravatar #3 - themuss
3. apr. 2008 14:15
utf8 eller iso859-1
Gravatar #4 - Tang
3. apr. 2008 14:19
Jeg har skrevet alt html rigtigt med meta-tags til ISO 8859-1. Men når jeg bruger include() på en txt-fil bliver alle æ, ø og å i denne ændret til "?"
Gravatar #5 - Mandalae
3. apr. 2008 14:21
#4,

Så gør som fidomuh siger i #2 .. Du bør alligevel aldrig bruge æøå direkte på et website..
Gravatar #6 - Tang
3. apr. 2008 14:23
Ok

Men hvordan skal jeg så skrive den include?

htmlspecialchars(include("info.txt"));

eller

include(htmlspecialchars(("info.txt"));
Gravatar #7 - Mandalae
3. apr. 2008 14:28
#6

For det første skal du nok lade være med at lægge dine tekster i en .txt fil, men hvis du alligevel insistere på at gøre det sådan skal du ikke bruge htmlspecialchars, men derimod lave en søg/erstat i dit .txt dokument og erstatte følgende:

Æ = &Aelig;
Ø = Ø
Å = Å
æ = æ
ø = ø
å = å

Så burde du ikke have problemet længere..
Gravatar #8 - themuss
3. apr. 2008 14:51
Nej da, han skal jo ikke konvertere sine tekst-filer.

Han skal have php til at parse dem korrekt.
Gravatar #9 - themuss
3. apr. 2008 14:51
Hov, og ja den sidste option i #6.
Gravatar #10 - myplacedk
3. apr. 2008 16:29
1 skrev:
Nu er jeg så stødt ind i det problem, at når jeg vil inkluderer noget indhold fra en txt-fil vha. include(), så bliver æ, ø og å ændret til "?".

Tjek at du bruger samme tegnsæti PHP-filerne (hvis der er æøå der), txt-filerne og i HTML'en (dvs. hvad du angiver i meta-tags).

Hvordan man gør det, kommer an på hvilken editor du bruger. Måske kan den fortælle dig det, måske skal du finde en anden måde.

Bruger du linux el. lign. kan du måske bruge "file" til at tjekke det:

$ echo "blåbærgrød" > test.txt
$ file test.txt
test.txt: UTF-8 Unicode text


Den fil er så ikke iso 8859-1, men utf-8.

Hvis du stikker mig en URL (evt. i en privat besked) kan jeg måske gennemskue hvilket tegnsæt der bliver brugt hvor. (Hvis jeg da er så heldig at det er selve browseren der laver spørgsmålstegnene.)
Gravatar #11 - myplacedk
3. apr. 2008 16:35
5 skrev:
Så gør som fidomuh siger i #2 .. Du bør alligevel aldrig bruge æøå direkte på et website..

Pjat. Hvis man bruger iso 8859-1 eller utf-8 er der ingen problemer overhovedet, så længe man gør det korrekt.

Det andet er spild af tid og båndbredde, ud over nogle ganske specielle situationer. Det er blot en work-around, ikke en løsning.

(Men en work-around kan selvfølgelig være godt nok.)
Gravatar #12 - myplacedk
3. apr. 2008 16:37
6 skrev:
include(htmlspecialchars(("info.txt"));

9 skrev:
Hov, og ja den sidste option i #6.

Nej! Der vil htmlspecialchars intet gøre (ud over at spilde tid), da der ingen specielle chars er i filnavnet. :)

(De ekstra parenteser gør heller intet interessant.)
Gravatar #13 - myplacedk
3. apr. 2008 16:39
7 skrev:
men derimod lave en søg/erstat i dit .txt dokument og erstatte følgende:

Hvis man vil opnå det mål du foreslår, så er det da en metode som vil virke.

Men det er grimt, da man ender med et format der er en bizar blanding af plaintext og HTML. Det vil jeg helt klart fraråde.
Gravatar #14 - rackbox
3. apr. 2008 16:43
Din text-fil er sikkert også encoded. Jeg kører alt i UTF-8, nærmest uden undtagelse. Så slipper jeg for at tage stilling:)
Gravatar #15 - Tang
4. apr. 2008 08:26
Så er problemet løst!

Serveren brugte åbenbart UTF-8 i stedet for iso-8859-1 (som der stod i PHP-instillingerne...). Så nu har jeg rettet det til utf-8 på min side og på mit webhotel.

Tak for de gode svar!
Gravatar #16 - izym
7. apr. 2008 19:38
Ellers kan du jo også bare:
echo htmlspecialchars(file_get_contents("info.txt"))

Du kan derved også sætte den til en variabel hvis du vil.
Gravatar #17 - arne_v
7. apr. 2008 20:03
#16

htmlspecialchars er nævnt flere gange før.

Efter min mening er HTML entities et hack som gav god mening midt i 90'erne, men som ikke burde være nødvendig idag.
Gravatar #18 - TullejR
7. apr. 2008 20:37
#5: Bullshit! Hvis man har tjek på det, så kan man sagtens køre alt som utf-8.
Gravatar #19 - fidomuh
7. apr. 2008 21:32
#18

Tjah, der er mange der ikke mener det er "god internet praksis" at bruge non-uniform chars paa et website.. Af den simple aarsag at det ikke er alle der kan se dem..

Men det er selvfoelgelig kun relevant hvis man forventer internationale gaester paa sit website :)

( Jeg bruger ikke æ ø å paa websites, fx :) )
Gravatar #20 - Acro
7. apr. 2008 21:53
19 skrev:
Tjah, der er mange der ikke mener det er "god internet praksis" at bruge non-uniform chars paa et website.. Af den simple aarsag at det ikke er alle der kan se dem..

Men det er selvfoelgelig kun relevant hvis man forventer internationale gaester paa sit website :)

( Jeg bruger ikke æ ø å paa websites, fx :) )


Dansk tekst bliver næppe mere forståelig for udlændinge, fordi du skriver oe i stedet for ø. Danskere i udlandet har formentlig ikke problemer med at se danske tegn. Det er altså et stort nummer at gøre ud af ingenting, selvom retstavningen tillader afvigelsen. Enhver standardinstallation af Windows, OS X og fx Ubuntu viser danske tegn korrekt, også selvom der installeres en engelsk udgave.
Gravatar #21 - myplacedk
8. apr. 2008 06:10
19 skrev:
Tjah, der er mange der ikke mener det er "god internet praksis" at bruge non-uniform chars paa et website.. Af den simple aarsag at det ikke er alle der kan se dem..

Er det ikke "gamlinger", og folk oplært af "gamlinger"? Jeg har brugt æøå med god samvittighed siden iso-8859-1 blev udbredt i browserne. Og det er alligevel en del år siden. Jeg kan dog ikke finde nogen referencer lige nu.

Iso 8859-1 og især utf-8 er meget udbredte tegnsæt. Hvis computeren ikke kan vise æøå, så er det et font-problem. Og det bliver ikke løst ved at bruge HTML entities.

Jeg vil meget gerne høre om det, hvis der er nogen der kender bare ét relevant system, som håndterer de danske bogstaver korrekt med HTML-entities, men ikke via iso-8859-1 og utf8.

19 skrev:
Men det er selvfoelgelig kun relevant hvis man forventer internationale gaester paa sit website :)

Hvis man skriver på dansk til internationale gæster, så kan selv HTML-entities ikke hjælpe dig med at gøre dig forståelig. ;-)
Gravatar #22 - Windcape
8. apr. 2008 06:31
21 skrev:
Er det ikke "gamlinger", og folk oplært af "gamlinger"? Jeg har brugt æøå med god samvittighed siden iso-8859-1 blev udbredt i browserne.

Og hvorfor er det et problem at bruge UTF-8 ?

Det ENESTE som blokere for det, er at stort set ingen windows text-editors har UTF-8 support, og derfor bliver det latin-1 du gemmer dine filer i, og derfor også det encoding der er nødvendig.

Jeg foretrækker UTF-8, men latin-1 er da også ok til sider jeg VED er 100% danske.

For udenlanske sider, ser jeg langt hellere at der bruges unicode (UTF-8 etc.) end f.eks. EUC-KR (koreansk) til specielle tegn.
Gravatar #23 - myplacedk
8. apr. 2008 06:36
22 skrev:
Og hvorfor er det et problem at bruge UTF-8 ?

Hvem siger det er det?
Gravatar #24 - fidomuh
8. apr. 2008 08:05
#20/21

Jeg vil gerne lige pointere at jeg er ligeglad med om folk bruger de tegn, jeg siger bare at mange mener det er daarlig skik :)

Jeg laver altid websites paa engelsk, og hvis der saa kommer noget dansk tekst paa, saa er det altid uden danske tegn, det var det eneste jeg mente :)
Gravatar #25 - myplacedk
8. apr. 2008 08:09
24 skrev:
jeg siger bare at mange mener det er daarlig skik :)

Der er mange der mener det er dårlig skik at spise med kasket på. Men så længe ingen ser mig gøre det, går det fint. (Eller så længe dem der ser det ikke brokker sig.)

Jeg tror faktisk det er det samme her. Det er ren tradition, der forhindrer folk i blot at skrive de danske tegn som de er, i iso 8859-1 eller utf8.
Gravatar #26 - fidomuh
8. apr. 2008 08:14
#25

Jeg er ikke uenig, overhovedet :)
Gravatar #27 - arne_v
8. apr. 2008 12:58
#22

Hvilke Windows editorer har ikke UTF-8 support ?

(Notepad har f.eks. !)
Gravatar #28 - myplacedk
8. apr. 2008 13:03
27 skrev:
Hvilke Windows editorer har ikke UTF-8 support ?
(Notepad har f.eks. !)

Nu du siger det, min Windows XP Notepad giver mig faktisk mulighed for at vælge tegnsæt:
*ANSI
*Unicode
*Unicode Big Endian
*UTF-8

(ANSI = Windows 1252 ~= iso 8859-1. Forskellen praktisk talt altid ligegyldig.)
Gravatar #29 - izym
8. apr. 2008 16:41
#17 Jep, men ikke på nogen måde så han fortsat kunne gemme sit indhold i tekstfiler, hvilket var meningen med min post, ikke at foreslå html entities.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login