使用正確的設置,您的腳本可以與SQL * Plus一起使用。這是我做的測試:
- (顯然)你的數據庫必須支持unicode。如有必要,使用NVARCHAR2。
- Setup your client application correctly。確保你的NLS_LANG變量設置正確,它必須支持unicode。我把我的地址設置爲
AMERICAN_ENGLISH.UTF8
。雖然SQL * Plus的DOS窗口不會顯示所有的Unicode字符,但它們會被正確地假脫機到文件中。
- (顯然也是)確保讀取假脫機文件的應用程序在正確的字符集中打開它。
現在的腳本:
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
這將插入與正確的字符ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
的文件,用文本編輯器(jEdit的在我的情況)打開俄語字符設置(UTF-8)正確顯示字符。
文森特是正確的!我沒有注意到假脫機文件不包含UTF-8 BOM,所以在我的編輯器中作爲ASCII加載。 – MarkF 2009-11-17 15:45:43
謝謝!我處在我的路上;但是我已經用word打開了生成的假脫機文件(用於快速測試),它甚至可以識別編碼! (也許是因爲它安裝在我的機器上) – 2009-11-18 08:38:09