Ketika Anda mengatakan Anda berjalan di server, maksud Anda melalui SQL*Plus?
Hal pertama yang harus diperiksa adalah karakter sebenarnya yang disimpan - gunakan fungsi DUMP untuk memeriksa ini:
Fungsi Pembuangan Oracle
Ini akan memberi tahu Anda apa yang sebenarnya disimpan. Jika rantai antara aplikasi klien Anda dan server Oracle tidak sesuai, Anda mungkin mendapatkan konversi kumpulan karakter.
Dengan asumsi karakter yang benar sedang disimpan, apa yang kemudian Anda lihat di server / sqlplus adalah konversi karakter yang ditampilkan. Yaitu. Oracle "menyajikan" karakter dengan benar, tetapi tampilan tidak menanganinya seperti yang Anda harapkan. Untuk memperbaikinya, Anda perlu menyetel variabel lingkungan NLS_LANG ke rangkaian karakter yang benar.
misalnya, dalam proyek baru-baru ini defaultnya:
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
lalu kueri beberapa data yang diberikan:
NAME
-----------------------------------
MS ELLIE MARTALL
Tapi:
set NLS_LANG=AMERICAN_AMERICA.US8PC437
Kemudian menjalankan kueri memberi:
NAME
-----------------------------------
MS ╔LLIE MARTALL
Dan juga:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
memberi:
NAME
-----------------------------------
MS ╔LLIE MARTALL
Kuncinya di sini adalah data aktualnya sama, cara penyajian data di layar Andalah yang membedakannya, dan perilaku itu dapat dikontrol oleh NLS_LANG.