Avatar billede weblance Nybegynder
16. juli 2011 - 23:55 Der er 6 kommentarer og
1 løsning

Få æøå til at virke med define() i ekstern fil

Hej

Jeg har en ekstern php sprogfil med en masse define(), som f.eks.

define("ALERT", "Pas på");

Denne fil kalder jeg med include(), men problemet er bare at når jeg viser teksten i denne fil får jeg noget skrammel tekst hvor de danske bogstaver står:

å'et bliver til et diamant tegn med et ? inden i.

Hvordan retter jeg dette?

/Carl
Avatar billede Slettet bruger
17. juli 2011 - 00:39 #1
Som du jo nok ved ligger problemet i en tegnsætnings konflikt mellem den pågældne fil og hvordan browseren ser siden.

Den eneste "løsning" jeg kan komme på, er en jeg ikke selv har afprøvet, men teoretisk set ville jeg mene den burde virke.

Lad mig prøve at forklarer min idé:
1. Hvis du ikke har umulighed for at ændre tegnsætningen på den pågældne fil, så har jeg svært ved at se en anden udvej end at hente filens indhold - f.eks. med file_get_contents()-funktionen

2. Så kører du filens indhold igennem en konverterings-funktion (se utf8_encode() og utf8_decode())

3. Nu skulle filens indhold gerne være i samme tegnsætning som resten af din side.

4. Du kan nu bruge funktionen eval() til at kører filens indhold som PHP kode.

*OBS* - eval() funktionen er en meget tricky funktion og kan hurtigt blive et kæmpe hul for sikkerheden af hele din webserver. Så vil råde dig til kun at bruge den i STRENGT KONTROLLERET "miljø".

Det er helt op til dig, om ovenstående er noget du tør kaste dig ud i, og vil selv holde øje med om nogen andre ligger inde med en smart funktion eller løsning.
Avatar billede CCodam Nybegynder
17. juli 2011 - 01:07 #2
#1 Tror du ikke bare at #0 er uvidende om at filerne skal være encoded ens?

#0 Sørg for at alle filerne er gemt som UTF-8, dette kan fx gøres ved save as i notepad.
Derefter sørg for at have et meta tag på din php side, der definerer at det skal læses som UTF-8
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
Avatar billede weblance Nybegynder
17. juli 2011 - 10:20 #3
#2 Filen index.php er UTF-8, filen sprog.php har ikke nogen meta. Det eneste filen sprog.php indeholder er en række define() med de forskellige tekster. Denne fil bliver inkluderet i index.php med include("sprog.php").

Problemet er bare at jeg ikke får de rigtige danske tegn frem.
Avatar billede erikjacobsen Ekspert
17. juli 2011 - 10:35 #4
Det har ikke noget at gøre med om der står "meta"-et-eller-andet i filen, men om den er gemt med det tegnsæt du skal bruge. Når du gemmer, "Save As" / "Gem som" skal du vælge, i dette tilfælde, "UTF-8", og hvis din editor tillader det, så uden "BOM", som ellers vil give dig 3 delvist usynlige tegn i begyndelsen af filen. Dem kan PHP ikke li.
Avatar billede weblance Nybegynder
17. juli 2011 - 11:05 #5
#4 - se den forstod jeg godt, og der var så her problemet lå. Tusind tak for det.
Avatar billede Slettet bruger
17. juli 2011 - 14:03 #6
Aha.. må have misforstået det, da der blev nævnet ekstern fil.
Syntes også spørgsmålet var lidt underligt - men så skulle jeg nok bare have været lidt mere vågen! ;-)
Avatar billede weblance Nybegynder
27. august 2011 - 15:04 #7
Det var erikjacobsens løsning der var løsningen på mit problem. Tusind tak Erik!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB