Maison >développement back-end >Problème PHP >Comment définir l'encodage lors de la connexion de PHP à Oracle

Comment définir l'encodage lors de la connexion de PHP à Oracle

藏色散人
藏色散人original
2021-07-02 10:36:492398parcourir

Comment définir l'encodage lors de la connexion à Oracle en PHP : récupérez d'abord le jeu de caractères d'Oracle ; puis définissez le code PHP sur "oci_connect("scott", "tiger", $db, 'zhs16gbk');".

Comment définir l'encodage lors de la connexion de PHP à Oracle

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Comment paramétrer l'encodage lors de la connexion à Oracle avec PHP ?

PHP se connecte à Oracle pour définir le jeu de caractères afin d'éviter les caractères tronqués

La base de données utilise Oracle Lorsque PHP se connecte à Oracle, il est préférable de spécifier le jeu de caractères.

Vérifiez le manuel PHP, le quatrième paramètre de oci_connect est charset, c'est la clé.

Récupérez d'abord le jeu de caractères d'Oracle et exécutez "select * from V$NLS_PARAMETERS;". La variable NLS_CHARACTERSET correspond au jeu de caractères dont nous avons besoin. Par exemple, ici c'est "ZHS16GBK". Par conséquent, le code PHP final est :

Code Php

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

Mes fichiers PHP locaux utilisent utf-8, donc le code obtenu doit être converti comme suit :

Code Php

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]));
}

- --- -------------------------------

MISE À JOUR

-------------- -------------------

Un collègue a déclaré qu'Oracle peut fournir des données selon le jeu de caractères spécifié par le client. En d'autres termes, si mon fichier PHP local utilise UTF-8, alors lorsque j'utilise oci_connect, je peux directement spécifier utf-8, et même la conversion d'encodage sera enregistrée.

Code Php

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

De plus, il y a un problème étrange : l'iconv précédemment converti en encodage est normal dans l'environnement de la machine de test, mais il ne peut pas être analysé correctement lorsqu'il est transmis à l'emplacement distant. remplacé par mb_convert_encoding. Le code est le suivant :

Code Php

$nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');  
$nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');

La raison possible est si "//IGNORE" est ajouté au deuxième paramètre dans iconv, veuillez vous référer à http://cn2.php.net /manual/en/function.iconv.php. Si vous êtes intéressé, vous pouvez l'essayer, mais je ne l'essaierai pas

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Comment installer php zbarcodeArticle suivant:Comment installer php zbarcode