Quando dici che corri sul server, intendi tramite SQL*Plus?
La prima cosa da controllare è quale carattere effettivo viene memorizzato:usa la funzione DUMP per verificare questo:
Funzione di dump Oracle
Questo ti dirà cosa è effettivamente memorizzato. Se la catena tra l'app client e il server Oracle non è appropriata, è possibile che si verifichi la conversione del set di caratteri.
Supponendo che venga salvato il carattere corretto, ciò che viene visualizzato sul server/sqlplus è la conversione dei caratteri visualizzata. Cioè. Oracle sta "servendo" il personaggio correttamente, ma il display non lo gestisce come previsto. Per risolvere questo problema, devi impostare la variabile di ambiente NLS_LANG sul set di caratteri corretto.
ad esempio, in un progetto recente l'impostazione predefinita:
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
quindi interroga alcuni dati forniti:
NAME
-----------------------------------
MS ELLIE MARTALL
Ma:
set NLS_LANG=AMERICAN_AMERICA.US8PC437
Quindi l'esecuzione della query ha fornito:
NAME
-----------------------------------
MS ÉLLIE MARTALL
E inoltre:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
ha dato:
NAME
-----------------------------------
MS ╔LLIE MARTALL
La cosa fondamentale qui è che i dati effettivi sono gli stessi, è il modo in cui i dati vengono presentati sul display è ciò che differisce e quel comportamento può essere controllato da NLS_LANG.