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).
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).