[php] Charset probleem

Pagina: 1
Acties:

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Ik gebruik voor een website de functie htmlentities() om teksten met quotes en tekens met accenten om te zetten naar een begrijpbaar formaat voor de browser. Op die manier kun je een hoop character set-problemen tussen de browser en de webserver voorkomen.

De functie htmlspecialchars() lost het probleem op doordat het niet álle tekens omzet en dus de boel overlaat aan de webserver en de browser, maar dit wil ik dus niet.

Nu is het zo dat een testserver hier bij mij thuis vervelend doet. Het is een Linux machine met Apache 2.0.50, PHP 4.3.8 en MySQL 3.23.58. Voor zover ik weet werkt alles met de charset latin1, maar het probleem ligt volgens mij puur bij PHP. Hier een korte omschrijving van het probleem:

Als ik een PHP-bestand aanmaak met de gehardcode waarde 'één', maakt PHP daar 'één' van. Nu is dit een charsetprobleem, want als ik deze waarde puur doorstuur naar de webserver en ik zet de charset encoding op utf-8, dan is er geen probleem.

Echter, als ik htmlentities() over die waarde haal, krijg ik dus 'één' te zien (ongeacht welke charset encoding ik kies, want PHP zet dit om naar waardes als '& Atilde;'). Zodra ik mijn bestanden op de productieserver zet is er geen probleem meer, maar ik kan werkelijk geen wezenlijk verschil ontdekken tussen de twee configuraties.

Wie weet hoe ik PHP wijs kan maken dat m'n bestanden in een ander formaat zijn geschreven? (ik heb zelf weinig verstand van charsets, ik zou het fijn vinden als iemand die het probleem ziet me kan uitleggen wat er nou precies verkeerd gaat).

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Schopje, ben ik de enige die een dergelijk probleem ondervindt tijdens het opzetten van een webserver?

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Wederom kick. Ik ga binnenkort PHP 5 apart compileren voor de server om te kijken of daar het probleem mee is opgelost; niemand nog ideeën?

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Inmiddels geupdate naar PHP5, en het probleem lijkt gedeeltelijk opgelost. Gehardcode strings in de scripts worden nu wél goed omgezet door htmlentities(), maar teksten die ik via MySQL binnenhaal nog steeds niet. Wederom niemand die iets kan toelichten? Ik ga straks updaten naar de laatste stabiele versie van MySQL, dit heb ik vanwege compatibiliteitsproblemen nog niet gedaan.

  • supergert
  • Registratie: December 2001
  • Niet online
Heb je al eens gekeken naar utf8_decode en/of utf8_encode? Ik had nl. hetzelfde probleem toen ik teksten uit MySQL in een Flash-movie wilde laden (via php), en heb dat via urlencode(utf8_encode($var)) opgelost.

ZX81 > C64 > Amiga > BeBox > PowerMac > pc-klonen...