Khi bạn nói rằng bạn chạy trên máy chủ, ý bạn là thông qua SQL * Plus?
Điều đầu tiên cần kiểm tra là ký tự thực nào đang được lưu trữ - sử dụng hàm DUMP để kiểm tra điều này:
Hàm Dump của Oracle
Điều này sẽ cho bạn biết những gì thực sự được lưu trữ. Nếu chuỗi giữa ứng dụng khách của bạn và máy chủ Oracle không phù hợp, bạn có thể nhận được chuyển đổi bộ ký tự xảy ra.
Giả sử ký tự chính xác đang được lưu, những gì bạn thấy sau đó trên máy chủ / sqlplus là chuyển đổi ký tự trên màn hình. I E. Oracle đang "phục vụ" ký tự một cách chính xác, nhưng màn hình không xử lý nó như bạn mong đợi. Để khắc phục điều này, bạn cần đặt biến môi trường NLS_LANG thành bộ ký tự chính xác.
ví dụ:trong một dự án gần đây, mặc định:
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
sau đó truy vấn một số dữ liệu đã cho:
NAME
-----------------------------------
MS ELLIE MARTALL
Nhưng:
set NLS_LANG=AMERICAN_AMERICA.US8PC437
Sau đó, chạy truy vấn đưa ra:
NAME
-----------------------------------
MS ÉLLIE MARTALL
Và cả:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
đã cho:
NAME
-----------------------------------
MS ╔LLIE MARTALL
Điều quan trọng ở đây là dữ liệu thực tế giống nhau, cách dữ liệu được hiển thị trên màn hình của bạn là khác nhau và hành vi đó có thể được kiểm soát bởi NLS_LANG.