Wie wird in UTF8 Text von mysql / phpmyadmin angezeigt?

14759
Utf8

Ich habe eine Datenbank mit mehreren Tabellen. Die Datenbank und die Tabelle sowie jede Zeile der Tabelle ist auf festgelegt utf8_romanian_ci.

Alle importierten Namen, die diakritische Zeichen enthalten, werden nicht korrekt angezeigt.

Zum Beispiel: Wenn ich MaÂehxin Tabelle einführe, habe ich geradeM

Die Daten aus der Tabelle werden aus der csvDatei importiert . In Excel erscheinen die Diakritik normalerweise.

Wie kann ich das beheben?

5
Hallo UTF8, ich sehe, dass Sie gerade erst auf der Website gestartet sind. Denken Sie also daran, eine Antwort zu akzeptieren, wenn das Problem gelöst wurde. Vielen Dank! zx81 vor 10 Jahren 0

1 Antwort auf die Frage

4
zx81

UTF-8 ist eine unbeständige Herrin. Für eine typische Webanwendung müssen Sie UTF-8 auf vielen Ebenen einstellen. Auch wenn der phpMyAdmin-Code gut mit UTF8 funktioniert, funktioniert er nicht im Vakuum: Die Serverkonfiguration ist wichtig. So ist die Datenbank und die Datenquelle für die Datenbank. Lassen Sie uns die möglichen Reibungsbereiche in einer allgemeinen Anwendung zusammenfassen, mit besonderem Fokus auf den für phpMyAdmin interessanten Bereichen.

A. Datenquelle

Wenn Daten in die Datenbank importiert werden, z. B. aus einer Textdatei, müssen sie die richtige Kodierung haben. Die Diakritiken werden möglicherweise in Excel angezeigt, die Kodierung kann jedoch beliebig sein. Sie können also eine CSV-Datei haben, die zwar richtig aussieht, aber nicht ordnungsgemäß importiert wird. Sie können die Kodierung Ihrer CSV-Datei in einem Texteditor wie EditPad oder einer IDE wie Komodo überprüfen und konvertieren. In Notepad ++, über das viele Benutzer verfügen, können Sie "Encoding" auswählen, um Ihre aktuelle Codierung anzuzeigen, und Sie können Encoding / Convert to UTF8 auswählen.

B. In Ihrer Datenbank. Der Zeichensatz und die Sortierreihenfolge der Tabelle müssen auf UTF-8 eingestellt sein. Es klingt, als hätten Sie es vielleicht schon getan.

Wenn nicht, brauchen Sie etwas wie:

ALTER TABLE MyTable DEFAULT CHARACTER SET utf8, COLLATE utf8_general_ci; 

Das ist die generische Einstellung, aber Ihre rumänische Kollatierung sollte auch funktionieren.

C. Die Verbindung zur Datenbank. Sie brauchen etwas wie:

$connectDSN = "mysql:host={$db_host};dbname={$db_name};charset=UTF-8"; 

PhpMyAdmin sollte sich korrekt verbinden. Auf der Landingpage sollten Sie sehen

Server charset: UTF-8 Unicode (utf8) 

Wenn nicht, lies weiter.

D. php muss UTF8 verarbeiten. In php.ini wollen Sie etwas wie:

default_charset = UTF-8  mbstring.language = Neutral  mbstring.internal_encoding = UTF-8  mbstring.encoding_translation = On  mbstring.http_input = auto  mbstring.http_output = UTF-8  mbstring.detect_order = auto  mbstring.substitute_character = “0xFFFD”  

Sie können Ihre Servereinstellungen mit phpinfo () überprüfen. Auf einem gemeinsam genutzten Host haben Sie normalerweise keinen Zugriff auf php.ini und müssen die Einstellungen direkt im Skript ändern. Denken Sie übrigens daran, die mb-Funktionen zu verwenden.

E. Header-Setup

Damit der Browser wissen kann, was er bekommt, muss er einen Header wie den folgenden erhalten, der von PHP gesendet wird:

<?php header('Content-type: text/html; charset=UTF-8'); ?> 

Dies sollte kein Problem mit phpMyAdmin sein. In Firefox können Sie mithilfe der Web Developer-Erweiterung Informationen anzeigen / Seiteninformationen anzeigen. Auf der Registerkarte Allgemein wird Ihnen die Kodierung angezeigt.

F. HTML-Meta-Tag

Dies wird empfohlen, um dem Browser zu helfen.

<meta charset="UTF-8"> 

Dies sollte kein Problem mit phpMyAdmin sein. Überprüfen Sie erneut im Browser, welche Codierung angezeigt wird.

G. Font

Der Browser verfügt möglicherweise nicht über die Schriftart, um einige Zeichen anzuzeigen, obwohl moderne Versionen ziemlich gut zu Fallback-Schriftarten sind. Dies ist wahrscheinlich kein Problem in Ihrem Fall.

Es gibt also viele Orte, an denen Dinge schief gehen können.

Ich hoffe, das hilft Ihnen, das Problem zu identifizieren!

Wenn alles in einer Reihe steht, dann magisch ... Sie bekommen überall UTF8.

Und vergiss nicht:

ಇಲ್ಲಿ ಸಂಭವಿಸು ಇಂದೆನ್ನ ಹೃದಯದಲಿ

ನಿತ್ಯವೂ ಅವತರಿಪ ಸತ್ಯಾವತಾರ

Mir ist bekannt, dass dies eine alte Antwort ist, mysqli_set_charset ($ this -> link, 'utf8'); `mein Problem wurde behoben, es war mein 'Bruch in der Kette', wenn Sie möchten :-) Edward vor 8 Jahren 0