2016-08-03 26 views
1

Ich habe eine Datenbank, wo ich die Datensätze für den Benutzer anzeigen muss. Ich bin mit htmlentities um sicherzustellen, dass kein schädlicher Code wird wie dies dem Benutzer Echo wird:Erlaube bestimmte (dänische) Zeichen mit htmlentities

function h($string) { 
     return htmlentities($string, ENT_SUBSTITUTE, "UTF-8"); 
    } 

dann den Aufruf der Funktion, wenn ich Ausgangs alle Einträge für den Benutzer. Das Problem ist, dass ich in der Lage sein muss, die dänischen Zeichen ÆØÅ zu zeigen, und diese Zeichen werden als Fragezeichen in einem Quadrat angezeigt. Die Seite hat auch UTF-8-Codierung.

Ich habe alles versucht, was unter htmlentities auf php.net aufgeführt ist und habe versucht, eine Lösung für das Erstellen von Ausnahmen oder eine andere Arbeit zu finden, aber ich konnte keine finden.

Kennt jemand eine Problemumgehung für dieses Problem?

+0

Ich lief Ihren Code genau, wie es in Ihrer Frage ist und es hat für mich funktioniert. –

+1

Versuchen Sie, eine erste Abfrage 'SET NAMES utf8' durchzuführen. Wenn Sie mysqli verwenden, können Sie Folgendes tun: mysqli_set_charset ($ link, utf8); oder wenn Sie PDO verwenden, können Sie die Kodierung festlegen, wenn Sie die Verbindung herstellen: mysql: host = $ host; dbname = $ db; charset = utf8 "'. Siehe diese Frage: http://stackoverflow.com/questions/4361459/php-pdo-charset-set-names – Ultimater

+1

Ich wäre erstaunt, wenn die Antwort nicht von diesem abgedeckt ist: http://stackoverflow.com/questions/279170/how-to-support-utf-8-komplett-in-einem-web-application/279279 – CD001

Antwort

0

Der zweite Kommentar beantwortet es. Das Hinzufügen des Zeichensatzes in der Verbindung löste das Problem. Also für meine PDO Verbindung musste ich es so setzen:

$dbh = new PDO('mysql:dbname=myName;charset=utf8;host=myHost', 'myUser', 'myPassw0rd'); 

Jetzt wird alles richtig angezeigt.