Maison  >  Article  >  Comment résoudre le jeu de caractères tronqués dans Oracle

Comment résoudre le jeu de caractères tronqués dans Oracle

zbt
zbtoriginal
2023-07-07 14:45:342637parcourir

Solution Oracle pour modifier le jeu de caractères tronqués : 1. Recherchez le fichier TNSNAMES.ORA et recherchez l'alias de la base de données à connecter, définissez la variable d'environnement NLS_LANG, ouvrez SQL*Plus et utilisez la configuration ci-dessus pour vous connecter au base de données ; 2. Créez une base de données pour stocker les caractères chinois. Table de caractères, insérez des caractères chinois dans le champ qui stocke les caractères chinois, utilisez le package UTL_FILE pour générer les caractères chinois, et après l'exécution, un fichier nommé chinois.txt sera créé dans le Répertoire UTL_DIR, qui contient des caractères chinois.

Comment résoudre le jeu de caractères tronqués dans Oracle

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle Database 20c, ordinateur DELL G3.

Dans la base de données Oracle, des caractères tronqués apparaissent souvent lors de la définition du jeu de caractères chinois, ce qui provoque des maux de tête pour de nombreux développeurs et administrateurs. Aujourd'hui, l'éditeur vous a présenté quelques méthodes pour résoudre le problème des caractères chinois tronqués dans la base de données Oracle. J'espère que cela vous sera utile.

Méthode 1 : Modifier NLS_LANG

NLS_LANG est une variable d'environnement dans la base de données Oracle, qui définit la méthode d'encodage des caractères dans la base de données. Après Oracle 9i, la valeur par défaut de NLS_LANG est AMERICAN_AMERICA.UTF8. Cette méthode de codage ne prend pas en charge le chinois, nous devons donc modifier manuellement la valeur de NLS_LANG pour prendre en charge le chinois.

Les étapes sont les suivantes :

1. Recherchez le fichier TNSNAMES.ORA et recherchez l'alias de la base de données à connecter, tel que :

orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

2. Définissez la variable d'environnement NLS_LANG, la valeur est le caractère défini sur. être utilisé, tel que :

set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

Ou

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

3. Ouvrez SQL*Plus et utilisez la configuration ci-dessus pour vous connecter à la base de données :

sqlplus system/oracle@orcl

Méthode 2 : Utiliser le package UTL_FILE

Le package UTL_FILE est utilisé pour les E/S de fichiers dans la base de données Oracle. Un package standard d'opérations. La lecture et l'écriture de fichiers texte peuvent être réalisées via UTL_FILE, et les caractères chinois peuvent être facilement traités.

Les étapes sont les suivantes :

1. Créez un tableau pour stocker les caractères chinois, tels que :

CREATE TABLE chinese (
name VARCHAR2(20),
clob CLOB
);

2. Insérez des caractères chinois dans le champ qui stocke les caractères chinois :

INSERT INTO chinese VALUES (‘中国’, ‘中华人民共和国’);

3. utilisez le package UTL_FILE pour générer des caractères chinois :

DECLARE
file_handle UTL_FILE.FILE_TYPE;
chinese_clob CLOB;
BEGIN
SELECT clob INTO chinese_clob FROM chinese WHERE name=’中国’;
file_handle := UTL_FILE.FOPEN(‘UTL_DIR’, ‘chinese.txt’, ‘w’, 32767);
UTL_FILE.PUT_LINE(file_handle, chinese_clob, FALSE);
UTL_FILE.FCLOSE(file_handle);
END;

Après l'exécution, un fichier nommé chinois.txt sera créé dans le répertoire UTL_DIR, qui contient des caractères chinois.

Résumé

Les deux méthodes ci-dessus peuvent résoudre le problème des caractères chinois tronqués dans la base de données Oracle. La première méthode consiste à modifier la valeur de la variable d'environnement NLS_LANG pour prendre en charge les caractères chinois, et la deuxième méthode consiste à lire et à écrire des caractères chinois via le package UTL_FILE. Selon les besoins spécifiques, vous pouvez choisir la méthode correspondante pour le résoudre.

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