Conversión del juego de caracteres de Oracle (2): 3. Configuración del entorno del cliente (1)

Examine la configuración del entorno del cliente de conversión de Oracle Character Set. La configuración del conjunto de caracteres del servidor y NLS_LANG del cliente se puede dividir en 9 casos de prueba y los resultados de cada prueba se pueden verificar.

Esta es una continuación del artículo anterior.

Conversión de juego de caracteres de Oracle(1): 1. Necesidad, guía de configuración correcta del juego de caracteres de Oracle

3. Configuración del entorno del cliente de conversión de juegos de caracteres de Oracle

La variable de entorno para establecer el conjunto de caracteres en Oracle Client es NLS_LANG.

* Documentación de Oracle de referencia: Elección de una configuración regional con la variable de entorno NLS_LANG (oracle.com)

Comúnmente, se piensa que el Cliente NLS_LANG debe coincidir con el Juego de Caracteres del Servidor, pero esto no es obligatorio. El conjunto de caracteres del servidor es una configuración para "almacenar" datos de cadenas de caracteres, y Client NLS_LANG es una configuración para "mostrar" y "enviar" datos de cadenas de caracteres.

En otras palabras, si el conjunto de caracteres del servidor está configurado incorrectamente, los datos de la cadena se almacenan incorrectamente y si el NLS_LANG del cliente está configurado incorrectamente, los datos de la cadena se muestran y transmiten incorrectamente.

Defina el caso del conjunto de caracteres del servidor y la configuración NLS_LANG del cliente de la siguiente manera y observe el resultado de la prueba.

Caso #Conjunto de caracteres del servidorCliente NLS_LANG
1US7ASCIIAMERICAN_AMERICA.KO16KSC5601
2US7ASCIIAMERICAN_AMERICA.KO16MSWIN949
3US7ASCIIAMERICAN_AMERICA.US7ASCII
4KO16MSWIN949AMERICAN_AMERICA.KO16KSC5601
5KO16MSWIN949AMERICAN_AMERICA.KO16MSWIN949
6KO16MSWIN949AMERICAN_AMERICA.US7ASCII
7AL32UTF8AMERICAN_AMERICA.KO16KSC5601
8AL32UTF8AMERICAN_AMERICA.KO16MSWIN949
9AL32UTF8AMERICAN_AMERICA.AL32UTF8

Para probar el conjunto de caracteres del servidor de manera diferente, se configuraron tres instancias de Oracle en la PC local y los nombres de TNS se designaron como oraus7, oramswin949, orautf, respectivamente.

테스트 DB서버 (Local PC) 구성
Configuración del servidor de base de datos de prueba (PC local)
  • oraus7: US7ASCII
  • oramswin949: KO16MSWIN949
  • orautf: AL32UTF8

Se seleccionaron dos valores de entrada para cada caso de prueba: "Hangul" y "Sharp".

"Hangul" es para verificar si es posible la entrada/salida general de coreano, y "sharp" es para verificar la entrada/salida de caracteres no admitidos por KSC5601.

El script de prueba (ejemplo) y la explicación son los siguientes.

-- Windows command prompt 환경
title Test Case (1) US7ASCII, AMERICAN_AMERICA.KO16KSC5601
set NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
sqlplus -S leg/leg@oraus7

-- sqlplus 환경
TRUNCATE TABLE Z_TEST;
INSERT INTO Z_TEST(VAL) VALUES('한글');
INSERT INTO Z_TEST(VAL) VALUES('샾');
COMMIT;
SELECT VAL, DUMP(VAL, 1016) DP FROM Z_TEST;
EXIT;
  • Línea 2: Establezca el título de la ventana del símbolo del sistema para una fácil identificación (diferente para cada caso de prueba, consulte a continuación)
  • Línea 3: Establecer NLS_LANG (diferente para cada caso de prueba, ver más abajo)
  • Línea 4: Ejecute y conéctese a sqlplus (Configure de manera diferente para cada caso de prueba. Consulte a continuación)
  • Línea 7: Trunca la tabla de prueba (Z_TEST)
  • Línea 8: Ingrese el valor "Hangul"
  • Línea 9: Ingrese el valor "agudo"
  • Línea 10: Ejecutar COMMIT
  • Línea 11: Salida de los valores de entrada y el resultado de la función DUMP
    • Nota: Si configura el segundo parámetro de la función DUMP en 1016, puede verificar la longitud del valor almacenado (número de bytes), el juego de caracteres y el valor hexadecimal de cada byte.
  • Línea 12: final

3.1. Resultados por caso de prueba

3.1.1. Caso #1 (US7ASCII – KO16KSC5601)

  • Conjunto de caracteres del servidor: US7ASCII (sqlplus -S leg/leg@us7ascii)
  • Cliente NLS_LANG: AMERICAN_AMERICA.KO16KSC5601
  • resultado de ejecución
    • 'Hangul': entrada exitosa, salida fallida (salida como un signo de interrogación (??))
    • 'sharp': error de entrada
Oracle Character Set 변환 Client 환경 구성 Case #1 실행결과
Resultado de la ejecución del caso #1 de configuración del entorno del cliente de conversión de juego de caracteres de Oracle

3.1.2. Caso #2 (US7ASCII – KO16MSWIN949)

  • Conjunto de caracteres del servidor: US7ASCII (sqlplus -S leg/leg@us7ascii)
  • Cliente NLS_LANG: AMERICAN_AMERICA.KO16MSWIN949
  • resultado de ejecución
    • 'Hangul': entrada exitosa, salida fallida (salida como un signo de interrogación (??))
    • 'Sharp': la entrada tiene éxito, la salida falla (las salidas como un signo de interrogación (?))
Case #2 실행결과
Resultado de la ejecución del caso #2

3.1.3. Caso #3 (US7ASCII – US7ASCII)

  • Conjunto de caracteres del servidor: US7ASCII (sqlplus -S leg/leg@us7ascii)
  • Cliente NLS_LANG: AMERICAN_AMERICA.US7ASCII
  • resultado de ejecución
    • 'Hangul': Entrada y salida exitosa (se almacena incorrectamente)
    • 'Sharp': entrada y salida exitosa (se almacena incorrectamente)
Case #3 실행결과
Resultado de la ejecución del caso #3

3.1.4. Caja #4 (KO16MSWIN949 – KO16KSC5601)

  • Conjunto de caracteres del servidor: KO16MSWIN949 (sqlplus -S leg/leg@oramswin949)
  • Cliente NLS_LANG: AMERICAN_AMERICA.KO16KSC5601
  • resultado de ejecución
    • 'Hangul': entrada, salida exitosa
    • 'sharp': error de entrada
Case #4 실행결과
Resultado de la ejecución del caso #4

3.1.5. Caja #5 (KO16MSWIN949 – KO16MSWIN949)

  • Conjunto de caracteres del servidor: KO16MSWIN949 (sqlplus -S leg/leg@oramswin949)
  • Cliente NLS_LANG: AMERICAN_AMERICA.KO16MSWIN949
  • resultado de ejecución
    • 'Hangul': entrada, salida exitosa
    • 'sharp': entrada, salida exitosa
Case #5 실행결과
Resultado de la ejecución del caso #5

3.1.6. Caso #6 (KO16MSWIN949 – US7ASCII)

  • Conjunto de caracteres del servidor: KO16MSWIN949 (sqlplus -S leg/leg@oramswin949)
  • Cliente NLS_LANG: AMERICAN_AMERICA.US7ASCII
  • resultado de ejecución
    • 'Hangul': entrada exitosa, salida fallida (salida como un signo de interrogación (????))
    • 'sharp': entrada exitosa, salida fallida (salida como un signo de interrogación (??))
Case #6 실행결과
Resultado de la ejecución del caso #6

3.1.7. Caja #7 (AL32UTF8 – KO16KSC5601)

  • Conjunto de caracteres del servidor: AL32UTF8 (sqlplus -S leg/leg@orauf)
  • Cliente NLS_LANG: AMERICAN_AMERICA.KO16KSC5601
  • resultado de ejecución
    • 'Hangul': entrada, salida exitosa
    • 'sharp': error de entrada
Case #7 실행결과
Resultado de la ejecución del caso #7

3.1.8. Caja #8 (AL32UTF8 – KO16MSWIN949)

  • Conjunto de caracteres del servidor: AL32UTF8 (sqlplus -S leg/leg@orauf)
  • Cliente NLS_LANG: AMERICAN_AMERICA.KO16MSWIN949
  • resultado de ejecución
    • 'Hangul': entrada, salida exitosa
    • 'sharp': entrada, salida exitosa
Case #8 실행결과
Resultado de la ejecución del caso #8

3.1.9. Caso #9-1 (AL32UTF8 – AL32UTF8)

  • Conjunto de caracteres del servidor: AL32UTF8 (sqlplus -S leg/leg@orauf)
  • Cliente NLS_LANG: AMERICAN_AMERICA.AL32UTF8
  • resultado de ejecución
    • 'Hangul': entrada, salida exitosa
    • 'Tienda': error de entrada: la página de códigos predeterminada del símbolo del sistema de Windows (cmd.exe) es 949 (ANSI) y no es compatible con la entrada/salida UTF-8, por lo que no se ejecuta con normalidad. Si lo ejecuta con PowerShell compatible con entrada/salida UTF-8 (Caso #9-2), puede ver que la entrada/salida funciona normalmente.
Case #9-1 실행결과
Resultado de la ejecución del caso #9-1

3.1.10. Caso #9-2 (AL32UTF8 – AL32UTF8) – Compatibilidad con UTF-8 que se ejecuta con PowerShell

  • Conjunto de caracteres del servidor: AL32UTF8 (sqlplus -S leg/leg@orauf)
  • Cliente NLS_LANG: AMERICAN_AMERICA.AL32UTF8
  • resultado de ejecución
    • 'Hangul': entrada, salida exitosa
    • 'sharp': entrada, salida exitosa
Case #9-2 실행결과
Resultado de la ejecución del caso #9-2

Hasta este momento, hemos analizado la configuración del entorno del cliente de conversión de Oracle Character Set y los resultados de cada caso de prueba. En el próximo artículo, resumiremos estos resultados y veremos la configuración recomendada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol