Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie das verstümmelte PHP-Oracle-Problem
Verstümmelte PHP-Oracle-Zeichen werden durch die falsche Konfiguration der Zeichensatzinformationen verursacht. Die Lösung besteht darin, „select * from V$NLS_PARAMETERS;“ über PLSQL auszuführen, um den Oracle-Zeichensatz zu erhalten und den richtigen Zeichensatz zurückzusetzen. Das ist es.
Problem mit verstümmeltem PHP-Oracle-Chinese-Code
Normalerweise treten bei der Standardkonfiguration Probleme mit verstümmeltem Code auf, wenn eine Verbindung zu Oracle hergestellt wird Tatsächlich wissen die meisten Leute, dass die Zeichensatzinformationen des Servers zuerst korrekt auf dem Client eingestellt werden müssen, bevor der Client eine Verbindung zum Oracle-Server herstellt. Der Oracle-Zeichensatz kann durch Ausführen von „select * from“ abgerufen werden V$NLS_PARAMETERS;“ über PLSQL. Die Variable NLS_CHARACTERSET entspricht dem Zeichensatz, den wir benötigen. Hier ist zum Beispiel „WE8ISO8859P1“
Empfohlen: „PHP Tutorial“
Die Methode zum Festlegen des Zeichensatzes ist wie folgt:
Methode 1: Umgebungsvariablen vor dem Herstellen einer Verbindung festlegen
putenv("NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1"); $conn=oci_new_connect($config['username'], $config['password'],$config['database']);
Methode 2: Umgebungsvariablen vor dem Herstellen einer Verbindung festlegen
$conn=oci_new_connect($config['username'], $config['password'],$config['database'],'we8iso8859p1');
Aber es ist schnell. Sie werden feststellen, dass die durch die oben genannten Einstellungen gelesenen chinesischen Daten normal angezeigt werden können, ohne dass die Codierung festgelegt werden muss, aber sobald sie auf der Seite verwendet werden (wenn der Zeichensatz der Seite UTF8 ist). ), wird es immer noch verstümmelt sein,
und selbst wenn es nach der Konvertierung von we8iso8859p1 -> utf-8 immer noch verstümmelt ist.
Tatsächlich habe ich nach sorgfältiger Untersuchung festgestellt, dass oci8 die Daten automatisch in das Standardcodierungsformat des Betriebssystems konvertiert, nachdem die Daten mit der Datenbankcodierung WE8ISO8859P1 abgerufen wurden ist GBK, es wird tatsächlich über OCI8 gelesen, die Zeichenkodierung ist GBK, daher sollte die Kodierungskonvertierung von GBK -> erfolgen
Das obige ist der detaillierte Inhalt vonSo lösen Sie das verstümmelte PHP-Oracle-Problem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!