2016-08-30 4 views
0

abgerufen werden. Ich verwende Codeigniter.
Nach dem Ausführen der folgenden Abfrage:kann keine Sonderzeichen anzeigen, die von AES_DECRYPT

$names = this->db->query("SELECT AES_DECRYPT(nombre,'".$key."') AS nombre FROM places")

ich die folgende Ausgabe von var_dump ($ Namen)

[43]=> 
array(1) { 
    ["nombre"]=> 
    string(41) "Industriales de Campeche" 
} 
[44]=> 
array(1) { 
    ["nombre"]=> 
    string(67) "Evaristo Garc�a ESE" 
} 
[45]=> 
array(1) { 
    ["nombre"]=> 
    string(39) "San Jose Popay�n" 

das Ergebnis der Abfrage auf phpMyAdmin erhalten wie folgt aussieht:

enter image description here

Wie Sie sehen können, werden die Felder, die Sonderzeichen enthalten, in der hexadezimalen Darstellung angezeigt tion. Wenn ich dieses Werkzeug http://www.rapidtables.com/convert/number/hex-to-ascii.htm benutze, kann ich die hexadezimalen Felder ohne Problem umwandeln (die Sonderzeichen werden gezeigt), aber die Sache ist, dass ich es im codeigniter nicht arbeiten lassen kann. Obwohl ich die UTF-8-Kodierung verwende, erscheinen die Sonderzeichen weiterhin als .

Es ist wert zu sagen, dass ich hatte keine Probleme vor der Verschlüsselung der Datenbank.

+1

http://stackoverflow.com/questions/279170/how-to-support-utf-8-completely-in-a-web-application – Sammitch

+0

ich habe versucht alles – hjsjar

+0

Sie sagen "Ich habe alles versucht", aber haben Sie es tatsächlich gelesen? Die MySQL-UTF-8-Kodierung ist *** nicht *** UTF-8-Kodierung. Ich nehme an, Ihre Datenspalte ist ein "Blob" -Typ? und/oder "Unicode"? Bitte erläutern Sie Ihre Tischstruktur. – Martin

Antwort

0

Sie benötigen 2 Dinge

  1. Set Tabellen- und Feld Sortierung tun, um "utf8_general_ci"
  2. Set Meta-Content-Typ in HTML wie unten

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    
+0

Ich bin, tut mir leid, aber das ist völlig hilfreich, es lohnt sich, [den Link] (http://stackoverflow.com/questions/279170/how-to-support-utf-8-completely-in-a- Web-Anwendung) von Sammitch in seinen Kommentaren – Martin

0
  • Überprüfen Sie, ob Ihre MySQL-Datenspalte _unicode_ oderverwendetZeichenfolgen. Überprüfen Sie auch Ihre Tabelle als Ganzes verwendet den gleichen Zeichensatz (in PHPMyAdmin in <table> -> Operations -> Collation suchen).

  • Überprüfen Sie, ob Ihre MySQL-Verbindung den Verbindungszeichensatz verwendet (siehe unten).

  • Sie sicher, dass Ihre HTML-Header gesetzt werden UTF-8 (der Header, nicht der <head> Abschnitt der Seite, obwohl das nicht auf UTF-8 verletzen kann auch eingestellt werden.).

Ich bin mir ziemlich sicher, dass Ihr Problem kommt, dass Ihre Verbindung zur Datenbank von Ihrem PHP (oder was auch immer) nicht der erforderliche volle UTF-8-Zeichensatz.

// In your database connection class. 
// Once initial contact has been established 
$this->dbObject->set_charset("utf8mb4"); 

Einige weitere Lektüre: UTF-8 all the way through