2014-01-09 38 views
1

我已經安裝了oracle與人員POLISH_POLAND.EE8MSWIN1250。我可以檢查select * from nls_database_parameters中的值是NLS_CHARACTERSET = EE8MSWIN1250和NLS_NCHAR_CHARACTERSET = AL16UTF16Oracle中的NLS_LANG參數

對於sqlplus,我已將NLS_LANG設置爲POLISH_POLAND.EE8PC852。現在我從sqlplus命令提示符下運行一個sql文件,它以「UTF-8 without BOM」保存,因爲它有波蘭語字符,並且工作正常。但是,如何檢查數據庫中的值是否正確?

我已經在SQL Developer中進行了檢查(設置NLS_LANG進行打磨後)並且看起來不正確。請幫忙。

回答

3

NLS_CHARACTERSET只是定義瞭如何在Oracle數據庫中保存文本二進制文件 - 因此也定義了可以存儲在數據庫中的字符。

如果您的SQL文件是UTF-8,它肯定與PC852或1250文件不同。 將您當地的NLS_LANG更改爲POLISH_POLAND.AL32UTF8,那麼它應該可以正常工作。

+0

謝謝。工作正常。 – user2837961

4

您的Oracle安裝的字符集主要與定義您存儲的字符有關。如果您的客戶使用不同的編碼,Oracle會自動轉換它。如果我沒有弄錯,它甚至會提醒你,如果你試圖保存一個不屬於你的編碼的字符。

就你而言,主要的挑戰是如何告訴SQLplus你的文本文件(SQL文件)的編碼。由於這是UTF-8,你需要指定一個UTF-8值:

set NLS_LANG=.AL32UTF8 

或者:

set NLS_LANG=POLISH_POLAND.UTF8 

這應該做的伎倆。

請注意,SQLplus不支持帶有BOM的UTF-8。但目前這似乎與您無關。