2016-05-06 5 views
1

Ich habe einige fremde Namen in meine Datenbank eingefügt und ich erkannte, dass ich vom Standard Latein/Schwedisch zu UTF-8 wechseln musste. Ich habe es tatsächlich in utf8mb4_general_ci geändert. Es zeigt die Charaktere jetzt korrekt an, aber ich bin auf ein kleines Problem gestoßen. Beim Abrufen eines Codes aus einer Textdatei (die in utf-8 codiert ist), wird der Code korrekt aufgenommen (z. B. FO), aber nachdem er in der Datenbank gespeichert wurde, wird er nun als \ r \ nFO angezeigt. Ich bin mir nicht sicher, wo diese zusätzlichen Charaktere abgeholt werden, aber es ist nicht von der Datei, denke ich.Fehler seit dem Ändern meiner MySQL-Datenbank in UTF-8

Habe ich während der Konvertierung etwas falsch gemacht, muss ich etwas vor dem Speichern der Zeichenfolge tun, oder hat es etwas damit zu tun, wie ich es in der Datenbank speichern?

Ich weiß, es gibt viele Themen zu diesem Thema, einschließlich SO, aber es gibt so viele, und ich habe keine mit diesem spezifischen Problem gefunden.

Einige Bearbeitungen .... Ich habe "Alle Symbole anzeigen" in Notepad ++ eingeschaltet und die CR LF werden am Ende der Zeilen korrekt angezeigt.

der Code in die Datenbank zum Einfügen ist ...

 $query = $db->prepare("INSERT INTO players 
     (Name, DetailsJSON) 
     VALUES (:Name, :NewDetails)"); 

     $query->bindParam(':Name', $this->Name, PDO::PARAM_STR); 
     $query->bindParam(':NewDetails', $this->DetailsJSON, PDO::PARAM_STR); 

     $query->execute(); 
     $this->ID = $db->lastInsertID(); 
+0

zeigen Sie uns den Code, bitte (Einfügen von Teil) – strangeqargo

+3

'\ r \ n' sieht aus wie eine schlecht entkommen Windows Wagenrücklauf/Zeilenvorschub –

+0

Edited im Einsatz zeigen. – Farflame

Antwort

0

und die CR LF erscheint korrekt am Ende der Leitungen.

CR = \ r

LF = \ n

so dass das Problem irgendwo in Ihrem PHP-Code ist. Sie lesen eine Datei, schneiden Zeilenumbrüche ab. Aber ohne einen Teil des Codes zu reduzieren, werden alle CRLF in ihre textuellen Darstellungen konvertiert.

+0

Ich meine, wenn ich die Option in Notepad ++ aktivieren, um alle Codes anzuzeigen, sehe ich CR LF am Ende jeder Zeile. Ich habe herausgefunden, dass die Art und Weise, wie ich die Zeilen teile (mithilfe von Explode), so aussieht, dass der CR LF aus der vorherigen Zeile an den Anfang des Codes angehängt wird. Trimmen behebt es. – Farflame

Verwandte Themen