[PHP] Probleem met UTF-8

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • WoBBeL
  • Registratie: Juni 2004
  • Laatst online: 11-09 13:01
Zo, ik ben tegen iets raars aangelopen.

Mijn PHP draait met UTF-8 character encoding, en dat gaat prima.

Script welke goed gaat:

PHP:
1
2
3
4
$string = "Bäkkër";
echo htmlentities ( $string );
// Output: Bäkkër
// OK!


Echter, vanuit een sessie gaat het fout!

PHP:
1
2
3
4
$_SESSION['Klant'] = "Bäkkër";
echo htmlentities ( $_SESSION['Klant'] );
// Output: Bäkker
// Fout!!


Als ik echo mb_internal_encoding ( ); doe krijg ik netjes UTF-8.
Een simpele echo van $_SESSION['Klant'] geef netjes Bäkkër terug!

Als ik echter met de hand opgeef dat hij UTF-8 moet zijn gaat het wel goed...

PHP:
1
2
3
4
$_SESSION['Klant'] = "Bäkkër";
echo htmlentities ( $_SESSION['Klant'] , ENT_COMPAT, "UTF-8" );
// Output: Bäkkër
// OK


Wat doe ik verkeerd ofzo

[ Voor 28% gewijzigd door WoBBeL op 16-07-2010 10:40 ]


Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

htmlentities gaat er standaard van uit dat je string ISO-8859-1 is:
Presently, the ISO-8859-1 character set is used as the default.

[ Voor 22% gewijzigd door JayVee op 16-07-2010 10:46 ]

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

Verwijderd

Tip: gebruik htmlentities() niet, het biedt 0.0 meerwaarde over htmlspecialchars.

Al die entities hoef je niet te encoden, zolang je encoding overal UTF-8 worden die karakters goed weergegeven.

Acties:
  • 0 Henk 'm!

  • Shagura
  • Registratie: Augustus 2001
  • Laatst online: 27-08 22:01
PHP zelf 'draait' trouwens nooit met UTF-8 ofzo. Het gaat gewoon uit van singlebyte characters, wat vaak nogal zuigt maar er is dus omheen te werken. mb_internal_encoding zet dan ook alleen de encoding van de multibyte functies waar htmlentities of htmlspecialchars geen deel van uit maken.

Je doet niet echt iets verkeerd, maar PHP kan af en toe dus nogal jammer zijn. Je kan ook eventueel een wrapperfunctie maken van htmlspecialchars als je geen zin hebt steeds alle argumenten mee te geven.