Toon posts:

[PHP] Probleem met UTF-8

Pagina: 1
Acties:

Onderwerpen


  • WoBBeL
  • Registratie: Juni 2004
  • Laatst online: 10:18
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]

Hosted VoIP SIP trunks Vast mobiel


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 06-04-2022

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!


Anoniem: 349894

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.

  • Shagura
  • Registratie: Augustus 2001
  • Laatst online: 05-06 23:38
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.


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee