So legen Sie die Kodierung fest, wenn Sie eine Verbindung zu Oracle in PHP herstellen: Rufen Sie zuerst den Zeichensatz von Oracle ab und setzen Sie dann den PHP-Code auf „oci_connect(“scott“, „tiger“, $db, ‚zhs16gbk‘);“.
Die Betriebsumgebung dieses Artikels: Windows7-System, PHP7.1-Version, DELL G3-Computer
Wie stelle ich die Codierung ein, wenn ich mit PHP eine Verbindung zu Oracle herstelle?
PHP stellt eine Verbindung zu Oracle her, um den Zeichensatz festzulegen, um verstümmelte Zeichen zu vermeiden.
Die Datenbank verwendet Oracle. Wenn PHP eine Verbindung zu Oracle herstellt, ist es am besten, den Zeichensatz anzugeben.
Schauen Sie sich das PHP-Handbuch an. Der vierte Parameter von oci_connect ist der Zeichensatz, dies ist der Schlüssel.
Besorgen Sie sich zunächst den Zeichensatz von Oracle und führen Sie „select * from V$NLS_PARAMETERS;“ aus. Die Variable NLS_CHARACTERSET entspricht dem von uns benötigten Zeichensatz. Daher lautet der endgültige PHP-Code:
Php-Code
$c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk'); $c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');
Meine lokalen PHP-Dateien verwenden utf-8, daher muss der erhaltene Code wie folgt konvertiert werden:
Php-Code
while ($dat = oci_fetch_row($cur)) { print_r(iconv('gb2312', 'utf-8', $dat[0])); } while ($dat = oci_fetch_row($cur)) { print_r(iconv('gb2312', 'utf-8', $dat[0])); }
- --- ----------------
UPDATE
-------------- -------------------
Ein Kollege sagte, dass Oracle Daten gemäß dem vom Kunden angegebenen Zeichensatz bereitstellen kann. Mit anderen Worten: Wenn meine lokale PHP-Datei UTF-8 verwendet, kann ich bei Verwendung von oci_connect direkt utf-8 angeben und sogar die Codierungskonvertierung wird gespeichert.
Php-Code
$c1 = oci_connect("scott", "tiger", $db, 'UTF8'); $c1 = oci_connect("scott", "tiger", $db, 'UTF8');
Darüber hinaus gibt es ein seltsames Problem: Das zuvor in die Codierung konvertierte Symbol ist in der Testmaschinenumgebung normal, kann jedoch bei der Übertragung an den Remote-Standort nicht ordnungsgemäß analysiert werden Ersetzt durch mb_convert_encoding. Der Code lautet wie folgt:
Php-Code
$nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk'); $nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');
Der mögliche Grund ist, ob „//IGNORE“ zum zweiten Parameter in iconv hinzugefügt wurde, siehe http://cn2.php.net /manual/en/function.iconv.php. Wenn Sie interessiert sind, können Sie es versuchen, aber ich werde es nicht versuchen
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo legen Sie die Codierung fest, wenn Sie PHP mit Oracle verbinden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!