Heim >Backend-Entwicklung >PHP-Tutorial >Wenn PHP eine Verbindung zu Oracle herstellt, tritt ein verstümmeltes chinesisches Problem auf

Wenn PHP eine Verbindung zu Oracle herstellt, tritt ein verstümmeltes chinesisches Problem auf

巴扎黑
巴扎黑Original
2016-11-08 11:39:341628Durchsuche

Die Datenbank verwendet Oracle, wenn Sie den Zeichensatz angeben, werden chinesische Zeichen verstümmelt angezeigt.

Schauen Sie sich das PHP-Handbuch an. Der vierte Parameter von oci_pconnect ist der Zeichensatz. Legen Sie einfach diesen Parameter fest.

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:

$conn = oci_pconnect('scott','tiger',
"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.0.1)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME=jocsbk)))",
'AL32UTF8');

Da lokale PHP-Dateien utf-8 einheitlich verwenden, ist die direkte Ausgabe normal. Es ist keine Transkodierung erforderlich.

Darüber hinaus muss laut relevanten Informationen eine Kodierungskonvertierung durchgeführt werden, wenn sich Ihre lokale Datei von dem Zeichensatz unterscheidet, der für die Verbindung mit Oracle verwendet wird.

while ($dat = oci_fetch_row($cur)) {   
  print_r(iconv('gb2312', 'utf-8', $dat[0]));   
}  
//或者
while ($dat = oci_fetch_row($cur)) {   
  print_r(mb_convert_encoding($dat[0], 'utf-8', 'gbk'));   
}

Es gibt eine andere Lösung, die ich aber noch nicht ausprobiert habe. Oracle kann Daten gemäß dem vom Client angegebenen Zeichensatz bereitstellen. 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.

$c1 = oci_connect("scott", "tiger", $db, 'UTF8');


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