sql >> Base de Datos >  >> RDS >> Oracle

cuando inserto un carácter persa en Oracle DB, veo el signo de interrogación

Cuando dices que ejecutas en el servidor, ¿quieres decir a través de SQL*Plus?

Lo primero que debe verificar es qué carácter real se está almacenando:use la función DUMP para verificar esto:

Función de volcado de Oracle

Esto le dirá lo que realmente está almacenado. Si la cadena entre su aplicación cliente y el servidor de Oracle no es adecuada, es posible que se produzca una conversión del juego de caracteres.

Suponiendo que se guarde el carácter correcto, lo que verá en el servidor / sqlplus es la conversión de caracteres en pantalla. Es decir. Oracle está "presentando" el carácter correctamente, pero la pantalla no lo está manejando como esperaba. Para solucionar esto, debe configurar la variable de entorno NLS_LANG en el juego de caracteres correcto.

por ejemplo, en un proyecto reciente, el valor predeterminado:

set NLS_LANG=AMERICAN_AMERICA.US7ASCII

luego consulta algunos datos dados:

NAME
-----------------------------------
MS ELLIE MARTALL

Pero:

set NLS_LANG=AMERICAN_AMERICA.US8PC437

Luego, ejecutar la consulta dio:

NAME
-----------------------------------
MS ÉLLIE MARTALL

Y también:

set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15

dio:

NAME
-----------------------------------
MS ╔LLIE MARTALL

La clave aquí es que los datos reales son los mismos, lo que difiere es la forma en que se presentan los datos en su pantalla, y ese comportamiento puede ser controlado por NLS_LANG.