Heim >Backend-Entwicklung >PHP-Tutorial >Warum zeigt mein neues CodeIgniter-Skript beschädigte persische Zeichen an, das alte Skript jedoch nicht?

Warum zeigt mein neues CodeIgniter-Skript beschädigte persische Zeichen an, das alte Skript jedoch nicht?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 05:30:15267Durchsuche

Why Does My New CodeIgniter Script Display Corrupted Persian Characters While the Old Script Doesn't?

Seltsame Zeichenkodierung in der Datenbank: Alte Skript-Dekodierung, neues Skript schlägt fehl

Problemstellung:

Bei der Migration einer Website von einem älteren Skript zu einem neuen CodeIgniter-basierten Skript treten Probleme mit der Zeichenkodierung auf. Das alte Skript kann in der Datenbank gespeicherte persische Zeichen anzeigen, während das neue Skript beschädigten Text anzeigt.

Analyse:

Die Datenbanktabellen und -spalten sind mit einer Sortierung konfiguriert von utf8_persian_ci. Das neue Skript verwendet auch UTF-8 als Zeichensatz und Sortierung. Das Problem ergibt sich aus der Art und Weise, wie Zeichen ursprünglich in der Datenbank gespeichert wurden, wenn die alte TubaDBEngine verwendet wurde.

Altes Skriptverhalten:

Wenn persische Zeichen in die eingefügt wurden Datenbank mithilfe von TubaDBEngine erstellt wurden, wurden sie nicht in UTF-8, sondern in einer anderen Kodierung gespeichert, was zur Anzeige von Zeichen wie z. B. führte „عمران“ in der Datenbank. Das alte Skript konnte diese Zeichen jedoch korrekt dekodieren und anzeigen.

Neues Skriptproblem:

Das neue Skript ist zwar korrekt für UTF-8 konfiguriert, kann dies jedoch nicht Dekodieren Sie die Zeichen, die ursprünglich in der Datenbank gespeichert waren, mithilfe der Codierung von TubaDBEngine. Infolgedessen zeigt das neue Skript beim Abrufen von Daten beschädigten Text an.

Lösung:

  1. Konvertieren Sie die in der Datenbank gespeicherten Daten mithilfe von a in UTF-8 Abfrage wie:
SELECT CONVERT(BINARY CONVERT(fName USING latin1) USING utf8) FROM tnewsgroups
  1. Aktualisieren Sie die Daten in der Datenbank mit einem UPDATE Aussage:
UPDATE tnewsgroups SET fName = CONVERT(BINARY CONVERT(fName USING latin1) USING utf8)

Nach der Datenkonvertierung sollte das neue Skript in der Lage sein, die persischen Zeichen korrekt abzurufen und anzuzeigen.

Das obige ist der detaillierte Inhalt vonWarum zeigt mein neues CodeIgniter-Skript beschädigte persische Zeichen an, das alte Skript jedoch nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn