Seltsame Zeichenkodierungsdiskrepanz bei der Datenspeicherung und -abfrage
Bei dem Versuch, eine alte Website neu zu schreiben, die persische Zeichen verwendet, sind Sie damit konfrontiert eine merkwürdige Diskrepanz zwischen der Art und Weise, wie Daten gespeichert und abgerufen werden. Das alte Skript zeigt persische Zeichen korrekt an, während das neue sie mit derselben Codierung wie die Datenbank anzeigt, die verzerrt erscheint.
Um dieses Problem zu verstehen, ist es wichtig zu beachten:
Wenn Sie persische Zeichen mit der alten Schrift eingeben, erscheinen diese als seltsame Sequenzen wie عمران in der Datenbank. Das alte Skript ruft sie jedoch ab und zeigt sie korrekt an. Dies deutet darauf hin, dass TUBADBENGINE ein separates Kodierungsschema verwendet, möglicherweise basierend auf ISO-8859-1, das vom neuen Skript nicht erkannt wird.
Umgekehrt werden persische Zeichen gespeichert, wenn Sie sie direkt in die Datenbank einfügen wie erwartet und vom neuen Skript korrekt abgerufen. Allerdings zeigt das alte Skript sie jetzt als Fragezeichen (????) an. Dies liegt daran, dass der Zeichendekodierungsmechanismus des alten Skripts eine andere Kodierung erwartet als die, die von der Datenbank für direkte Einfügungen verwendet wird.
Die Lösung besteht darin, die vorhandenen Daten in der Datenbank von der von TUBADBENGINE verwendeten Kodierung in UTF zu konvertieren -8-Kodierung von CodeIgniter erwartet. Um dies zu erreichen:
UPDATE tnewsgroups SET fName = CONVERT(INARY CONVERT(fName USING latin1) USING utf8);
Sobald die Daten konvertiert sind, sollten sowohl das neue als auch das alte Skript persische Zeichen korrekt anzeigen.
Das obige ist der detaillierte Inhalt vonWarum werden meine persischen Zeichen in alten und neuen Website-Skripten unterschiedlich angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!