Usé el siguiente comando para probar mi codificación actual de Oracle

select userenv('language') from dual;
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
select * from nls_database_parameters
select * from nls_instance_parameters
select * from nls_session_parameters

enter image description here

Pero lo que quiero es AL32UTF8. Cómo cambiar la codificación a AL32UTF8. Gracias ~

1
Zetian 31 mar. 2017 a las 05:22

2 respuestas

La mejor respuesta

Abre tu consola

sqlplus "/ as sysdba"

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter session set sql_trace=true;
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter system set aq_tm_processes=0;
SQL> alter database open;

//For version before oracle 9i like 8i, using these two lines
SQL> alter database character set internal_use UTF8;
SQL> alter database national character set internal_use UTF8;
//For version after oracle 9i, using these two lines
SQL> alter database character set internal_use AL32UTF8;
SQL> alter database national character set internal_use AL32UTF8;

SQL> alter session set sql_trace=false;
SQL> shutdown immediate;
SQL> startup;
-1
dongx 31 mar. 2017 a las 02:24

Hay dos formas de configurarlo.

  • Como variable de entorno NLS_LANG. Ya sea temporalmente con

    SET NLS_LANG=AMERICAN_AMERICA.AL32UTF8 o en la configuración de Propiedades de su computadora.

  • En su registro en HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG, resp. HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG para un Cliente Oracle de 32 bits en Windows de 64 bits.

En caso de que establezca ambas, la variable de entorno tiene prioridad.

Tenga en cuenta que cuando establece el valor NLS_LANG, simplemente le dice a la base de datos Oracle "mi cliente usa el juego de caracteres AL32UTF8". ¡No significa necesariamente que su cliente realmente esté usando AL32UTF8!

En el caso de SQL * Plus, hereda el juego de caracteres de la página de códigos cmd.exe. Puede interrogarlo y cambiarlo con el comando chcp, p.

C:\>chcp
Active code page: 850

C:\>chcp 65001
Active code page: 65001

C:\>sqlplus ...

Consulte Identificadores de página de códigos para obtener una lista de páginas de códigos.

Sin embargo, de acuerdo con su captura de pantalla, utiliza SQL Developer basado en Java. SQL Developer no depende de la configuración de NLS_LANG. Compruebe el valor en Herramientas -> Preferencias -> Entorno -> Codificación.

7
Community 20 jun. 2020 a las 09:12