Je sais comment le jeu de caractères de la base de données ( NLS_CHARACTERSET
en select * from v$nls_parameters;
) et le jeu de caractères client (le paramètre d'environnement client NLS_LANG
) interagissent.
Ce que je ne peux pas savoir cependant, c'est comment ou si je peux déterminer, pour une session établie , ce que Oracle pense que le jeu de caractères client actuel est.
Est-ce possible?
Remarque: SELECT * FROM NLS_SESSION_PARAMETERS;
n'inclut pas le jeu de caractères (sur 10g2).
Pour clarifier ce que j'aimerais accomplir:
- NLS_LANG est défini dans l'environnement client sur une valeur arbitraire (par exemple
GERMAN_GERMANY.WE8MSWIN1252
) - L'application de base de données [*] démarre et établit une connexion / session avec la base de données Oracle.
- L'application de base de données [*] veut "demander" à Oracle (et non à son environnement de système d'exploitation) ce que le jeu de caractères client est supposé par Oracle.
[*]: Si l'application db est sqlplus, l'exemple se présente comme suit:
...
sqlplus /nolog
connect user/pass@example
*magic command*;
CLIENT CHARACTERSET = ...
La note de Jack dans sa réponse soulève deux points importants:
- Avec Oracle, qui fait la traduction du jeu de caractères. Est-ce le code client-bibliothèque ou est-ce fait côté serveur?
- Comme il semble que ce soit le client, le client devrait exposer ce paramètre - ce que la bibliothèque / l'outil client suppose que ce paramètre est. Existe-t-il des bibliothèques / outils client Oracle (sqlplus, OCI / OCCI, Pro * C, ...) qui peuvent être interrogés sur ce qu'il pense être ce paramètre?