Maison >développement back-end >Problème PHP >Comment résoudre le problème brouillé de PHP Oracle

Comment résoudre le problème brouillé de PHP Oracle

藏色散人
藏色散人original
2020-07-21 11:14:462471parcourir

Les caractères tronqués d'Oracle sont causés par une configuration incorrecte des informations sur le jeu de caractères. La solution consiste à exécuter "select * from V$NLS_PARAMETERS;" via PLSQL pour obtenir le jeu de caractères Oracle et réinitialiser le jeu de caractères correct. C'est ça.

Comment résoudre le problème brouillé de PHP Oracle

Problème de code tronqué PHP Oracle chinois

Habituellement, la configuration par défaut rencontrera des problèmes de code tronqué lors de la connexion à Oracle lorsque traitement du chinois, en fait, la plupart des gens savent qu'avant que le client ne se connecte au serveur Oracle, les informations de jeu de caractères du serveur doivent d'abord être correctement définies sur le client, et le jeu de caractères Oracle peut être obtenu en exécutant "select * from V$NLS_PARAMETERS;" via PLSQL. La variable NLS_CHARACTERSET correspond au jeu de caractères dont nous avons besoin. Par exemple, voici "WE8ISO8859P1"

Recommandé : "Tutoriel PHP"

La méthode de définition du jeu de caractères est la suivante :

Méthode 1 : Définir les variables d'environnement avant de se connecter

putenv("NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1");
$conn=oci_new_connect($config['username'], $config['password'],$config['database']);

Méthode 2 : Définir les variables d'environnement lors de la connexion

$conn=oci_new_connect($config['username'], $config['password'],$config['database'],'we8iso8859p1');

Mais c'est rapide Vous constaterez que les données chinoises lues grâce aux paramètres ci-dessus peuvent être affichées normalement sans paramétrer l'encodage, mais une fois utilisées dans la page (si le jeu de caractères de la page est UTF8 ), il sera toujours tronqué,

et même si après la conversion de we8iso8859p1 -> utf-8, il est toujours tronqué.

En fait, après une étude approfondie, j'ai découvert qu'oci8 convertit automatiquement les données au format d'encodage par défaut du système d'exploitation après avoir obtenu les données avec l'encodage de base de données WE8ISO8859P1 si l'encodage par défaut du système d'exploitation que j'utilise. est GBK, il sera en fait lu via OCI8 , le codage des caractères est GBK, donc lorsqu'il est utilisé sur la page, la conversion de codage doit être de GBK ->

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