Bạn phải phân biệt hai cài đặt nls khác nhau
-
cái bên ngoài - được xác định bởi biến môi trường NLS_LANG trong ứng dụng của bạn. Điều này xác định biểu diễn chuỗi nội bộ của bạn khi bạn gửi dữ liệu đến thư viện máy khách OCI.
-
nội bộ. Đây là bộ ký tự được Oracle sử dụng để lưu trữ dữ liệu của bạn trên đĩa.
Cố gắng thực thi
select r.module, t.*
from v$sesssion_connection_info t
join v$session r on (r.sid = t.sid and t.serial# = r.serial#)
where r.sid = <your ruby connection SID>;
select * from nls_database_parameters;
select * from nls_instance_parameters;
Nếu nó cho thấy rằng bạn đang sử dụng một cái gì đó như US7ASCII hoặc ISO8859P1 thì Oracle chấp nhận ký tự của bạn và chuyển đổi nó thành bộ ký tự đích (bằng cách bỏ dấu hoặc bằng cách thay thế bằng '?').