Yo sé cómo el juego de caracteres de base de datos ( NLS_CHARACTERSET
en select * from v$nls_parameters;
) y el conjunto de caracteres del cliente (el valor del entorno de cliente NLS_LANG
) interactúan.
Sin embargo, lo que no puedo descubrir es cómo o si puedo determinar, para una sesión establecida , qué Oracle cree que es el conjunto de caracteres del cliente actual.
¿Es esto posible en absoluto?
Nota: SELECT * FROM NLS_SESSION_PARAMETERS;
no no incluir el juego de caracteres (en 10G2).
Para dejar absolutamente claro lo que me gustaría lograr:
- NLS_LANG se establece en el entorno del cliente en un valor arbitrario (por ejemplo
GERMAN_GERMANY.WE8MSWIN1252
) - La aplicación de base de datos [*] se inicia y establece una conexión / sesión con la base de datos Oracle.
- La aplicación de base de datos [*] quiere "preguntar" a Oracle (no a su entorno de sistema operativo) qué asumirá el conjunto de caracteres del cliente.
[*]: Si la aplicación db es sqlplus, el ejemplo sería el siguiente:
...
sqlplus /nolog
connect user/pass@example
*magic command*;
CLIENT CHARACTERSET = ...
La nota de Jack en su respuesta plantea dos puntos importantes:
- Con Oracle, quien hace la traducción del juego de caracteres. ¿Es el código de la biblioteca del cliente o se realiza en el lado del servidor?
- Como parece que es el cliente, el cliente necesitaría exponer esta configuración, lo que la biblioteca / herramienta del cliente supone que es esta configuración. ¿Hay alguna de las bibliotecas / herramientas del cliente Oracle (sqlplus, OCI / OCCI, Pro * C, ...) que se puede consultar para saber qué cree que es esta configuración?
fuente
NLS_LANG
" realmente diciendo lo contrario, ¿no? :-)Puedes ver lo siguiente :
P.ej:
fuente