0

Wir haben eine Website Google, die mit chinesischen Schriftzeichen beschäftigt und wurde auf AWS gehostet.chinesische Schriftzeichen codieren Fehler beim Umzug Datenbank von aws Cloud SQL

Hier kann ich chinesische Zeichen in der Datenbank ohne jedes Problem speichern.

Jetzt bewegen wir uns zu Google Cloud und ich bin mit dem Problem konfrontiert, chinesische Schriftzeichen in der Datenbank zu speichern.

Sie Display als € åœ ° å ... © æª ¢

Ich verfolge alle Regeln wie "Spalte sein sollte UTF8-Unicode-ci" und "Datenbankverbindung als utf8" .

Es funktioniert gut auf localhost.

Jede Idee, was kann ein Problem sein?

Danke.

Antwort

2

Wenn die Daten (Spalte) in der Datenbank in beiden Fällen UTF8-kodierte Daten enthalten und der Code/die Plattform, die die Daten auf der Webseite behandelt, gleich ist (also nicht python 2 vs. python 3 für Beispiel), der Unterschied könnte die aktuelle lokale Einstellung sein, entweder der Google-Server (Umgebungsvariablen), der SQL-Client (UTF8-Einstellungen) oder die PHP-Einstellungen. Ermöglicht mit dem SQL-Client starten: Versuchen Sie, die PHP zu laufen - Funktion

mysqli_character_set_name() 

bekommen die Codierung. Wenn es nicht UTF-8 ist dann legen Sie es mit

mysqli_set_charset('utf8') 

Wenn dies nicht funktioniert, die PHP-html Sachen sicherzustellen, indem sie den Zeichensatz in der META HTML-Tag zu utf-8 Einstellung

charset=utf-8 

und erzwingen sie mit

declare(encoding='utf8') 
+0

Ich benutze PHP und Datenbank-Version ist 5.6 – Rich5757

+0

Ok, ich nehme diese Umgebung hier an [link] (https://cloud.google.com/php/getting-started/using-cloud-sql-with-mysql) Beginnen Sie mit dem Vergleich der unterstützten lokalen Datenbanken [link] (https://dev.mysql.com/doc/refman/5.5/en/charset-unicode.html). Wenn dies in Ordnung ist, könnte das Problem im Client liegen, überprüfen Sie die lokalen Einstellungen auf Ihrer Linux (Google) Plattform zu Ihrer vorherigen Plattform [link] (https: //www.cyberciti.biz/faq/how-to-set-locales-i18n-on-a-linux-unix /) Hinweis: Wenn Sie die MySQL-Datenbankversion 5.x verwenden, überprüfen Sie, ob Ihr (ODBC?) -Client auch 5.x (oder unterstützt das) –

+0

Ich versuchte oben Link, aber nicht helfen. Alles Ding utf8 – Rich5757

1

Sieht aus wie Sie latin1 irgendwo in der Verarbeitung haben.

一地兩檢 ist "Mojibake" für 一地兩檢

See Mojibake in Trouble with UTF-8 characters; what I see is not what I stored

Einige chinesische Schriftzeichen 4 Bytes nehmen, nicht nur 3 Bytes. Also, ich empfehle Ihnen, utf8mb4, nicht einfach utf8 zu verwenden.

+0

Danke, Die Antworten, die du verlinkt hast, sind sehr hilfreich, um die Dinge zu verstehen. – Rich5757

Verwandte Themen