với các cài đặt phù hợp, tập lệnh của bạn hoạt động với SQL * Plus. Đây là những gì tôi đã làm để kiểm tra nó:
- (rõ ràng) cơ sở dữ liệu của bạn phải hỗ trợ unicode. Sử dụng NVARCHAR2 nếu cần.
- Thiết lập ứng dụng khách của bạn một cách chính xác. đảm bảo rằng biến NLS_LANG của bạn được đặt chính xác, nó phải hỗ trợ unicode. Tôi đặt của tôi thành
AMERICAN_ENGLISH.UTF8
. Mặc dù cửa sổ DOS của SQL * Plus không hiển thị tất cả các ký tự unicode nhưng chúng sẽ được lưu vào tệp một cách chính xác. - (rõ ràng là quá) đảm bảo rằng ứng dụng đọc tệp được lưu đệm sẽ mở tệp đó theo đúng bộ ký tự.
Bây giờ cho tập lệnh:
SQL> select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET';
PARAMETER VALUE
------------------ ------
NLS_CHARACTERSET UTF8
SQL> create table street_points (data varchar2(10));
Table created
SQL> INSERT INTO street_points VALUES (chr(53401)||chr(53398));
1 row inserted
Thao tác này sẽ chèn các ký tự tiếng Nga ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
Tệp, được mở bằng trình soạn thảo văn bản (trong trường hợp của tôi là jEdit) với bộ ký tự chính xác (UTF-8) sẽ hiển thị các ký tự một cách chính xác.