PHP og utf8

Tags:    php

Hej allesammen!

Jeg sidder med et problem her. Jeg har et system, som er formateret i UTF-8 - men det virker ikke på alle servere. Nogle har problmer med æøå... Hvordan løser jeg det?

Det har vel noget med php.ini at gøre (jeg kan ikke direkte manipulere php.ini, men bruge ini_set).

Nogen der kan hjælpe? - hvad er det jeg skal sætte?

Edit: Det skal lige siges, at det virker på en Surftown server - så det er formentligt encodingen.



Indlæg senest redigeret d. 07.07.2007 22:30 af Bruger #4575
6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Når du skal udskrive specialtegn (æ,ø,å,© osv.) i html, bør du bruge koderne for tegnene. Eks. ø for lille ø og Å for stort Å.

Du kan finde flere her:
http://www.utexas.edu/learn/html/spchar.html



Sørg for at sende en header, der fortæller om den valgte encoding.

Fortæl databaseforbindelsen, hvilken encoding du bruger (Hvis du bruger MySQL, så skal det være 4.1 eller højere, og du skal bruge PDO eller mysqli extension, ikke mysql extension).

Slå funktioner, som automatisk manipulerer dit input, fra (register_globals, magic_quotes) da du med disse ikke har mulighed for at angive den korrekte encoding.

Angiv encoding i funktioner, der manipulerer tekststrenge, eksempelvis htmlspecialchars.



Indlæg senest redigeret d. 07.07.2007 22:41 af Bruger #3143
Når du skal udskrive specialtegn (æ,ø,å,© osv.) i html, bør du bruge koderne for tegnene. Eks. ø for lille ø og Å for stort Å.

Du kan finde flere her:
http://www.utexas.edu/learn/html/spchar.html


Man KAN, men man BØR ikke, det er der ingen grund til.



Sørg for at sende en header, der fortæller om den valgte encoding.

Fortæl databaseforbindelsen, hvilken encoding du bruger (Hvis du bruger MySQL, så skal det være 4.1 eller højere, og du skal bruge PDO eller mysqli extension, ikke mysql extension).

Slå funktioner, som automatisk manipulerer dit input, fra (register_globals, magic_quotes) da du med disse ikke har mulighed for at angive den korrekte encoding.

Angiv encoding i funktioner, der manipulerer tekststrenge, eksempelvis htmlspecialchars.


Pt. bruger jeg en meta http-equiv, men den kan selvfølgelig lige så godt udskiftes med en header :)

Det er ikke mysql der er problemet - det er direkte i PHP. Antag jeg har en test.php:

<?
header('Content-Type:text/html; charset=utf-8');
echo 'æ';
?>

Det giver et forkert resultat :(

Men jeg vil lige forsøge mig med register_globals go magic_quotes :)



Sørg for at sende en header, der fortæller om den valgte encoding.

Fortæl databaseforbindelsen, hvilken encoding du bruger (Hvis du bruger MySQL, så skal det være 4.1 eller højere, og du skal bruge PDO eller mysqli extension, ikke mysql extension).

Slå funktioner, som automatisk manipulerer dit input, fra (register_globals, magic_quotes) da du med disse ikke har mulighed for at angive den korrekte encoding.

Angiv encoding i funktioner, der manipulerer tekststrenge, eksempelvis htmlspecialchars.


Pt. bruger jeg en meta http-equiv, men den kan selvfølgelig lige så godt udskiftes med en header :)

Det er ikke mysql der er problemet - det er direkte i PHP. Antag jeg har en test.php:

<?
header('Content-Type:text/html; charset=utf-8');
echo 'æ';
?>

Det giver et forkert resultat :(

Men jeg vil lige forsøge mig med register_globals go magic_quotes :)


Haha, jeg har fundet fejlen :)
Det skyldes, at min editor af den ene eller anden grund har valgt at formatere nogle af mine filer som utf-8 og andre som iso-8859-1.

Det er ikke første gang det er sket. Hmmm.. :)



Hvilken editor bruger du?



t