Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie das verstümmelte PHP-Oracle-Problem

So lösen Sie das verstümmelte PHP-Oracle-Problem

藏色散人
藏色散人Original
2020-07-21 11:14:462469Durchsuche

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.

So lösen Sie das verstümmelte PHP-Oracle-Problem

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!

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