web-dev-qa-db-fra.com

Dans Oracle, comment modifier ma session pour afficher UTF8?

Je ne peux pas comprendre la syntaxe cryptée d'Oracle pour la vie de moi. C'est Oracle 10g

NLS_LANGUAGE de ma session est actuellement par défaut AMERICAN. Je dois pouvoir afficher les caractères UTF8.

Voici quelques-unes de mes tentatives, toutes incorrectes:

ALTER SESSION SET NLS_LANGUAGE='UTF8'
ALTER SESSION SET NLS_LANGUAGE='AMERICAN_AMERICA.UTF8'

Quelle est la commande secrète?

15
Aaron Fi

Le jeu de caractères fait partie de l'environnement local, qui est déterminé par la valeur de NLS_LANG. Comme la documentation le précise c'est une variable du système d'exploitation :

NLS_LANG est défini comme variable d'environnement sur les plates-formes UNIX. NLS_LANG est défini dans le registre sur les plates-formes Windows.

Maintenant, nous pouvons utiliser ALTER SESSION pour modifier les valeurs de deux éléments de paramètres régionaux, NLS_LANGUAGE et NLS_TERRITORY. Mais pas, hélas, le jeu de caractères. La raison de cet écart est - je pense - que la langue et le territoire affectent simplement la façon dont Oracle interprète les données stockées, par exemple s'il faut afficher une virgule ou une période lors de l'affichage d'un grand nombre. Alors que le jeu de caractères concerne la façon dont l'application cliente restitue les données affichées. Ces informations sont récupérées par l'application cliente au moment du démarrage et ne peuvent pas être modifiées de l'intérieur.

13
APC

D'accord, par http://www.Oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm :

NLS_LANG ne peut pas être modifié par ALTER SESSION, NLS_LANGUAGE et NLS_TERRITORY le peuvent. Toutefois, NLS_LANGUAGE et/ou NLS_TERRITORY ne peuvent pas être définis en tant que paramètres "autonomes" dans l'environnement ou le registre sur le client.

De toute évidence, la "bonne" solution consiste, avant de se connecter à Oracle, à définir la variable d'environnement suivante:

export NLS_LANG=AMERICAN_AMERICA.UTF8

Oracle obtient un gros F gros pour la convivialité.

9
Aaron Fi

Par conséquent, avant de démarrer '$ sqlplus' sur OS, exécutez les opérations suivantes:

  • Sous Windows

    définir NLS_LANG = AMERICAN_AMERICA.UTF8

  • Sous Unix (Solaris et Linux, centos, etc.)

    export NLS_LANG = AMERICAN_AMERICA.UTF8

Il serait également conseillé de définir la variable env dans votre '.bash_profile' [au script de démarrage]

C'est l'endroit où les autres variables env Oracle (Oracle_SID, Oracle_HOME) sont généralement définies.

just fyi - SQL Developer est bon pour afficher/gérer les caractères UTF8 non anglais.

3
pahariayogi