我使用的是不是全局爲的Oracle數據庫爲Unicode設置 - 但我已經能夠使用Unicode字符在需要時使用NVARCHAR2
數據類型這是必需的。無法從Oracle變量讀取Unicode字符
這對存儲在數據庫中的數據工作正常 - 但我目前的用例是一個臨時變量。對於這個問題的目的,下面舉例說明我的問題:
VAR TEST NVARCHAR2(50);
DEFINE TEST = 'This string contains 「Unicode」 characters';
SELECT '&&TEST' AS TEST
FROM DUAL;
我希望這個輸出是:
This string contains 「Unicode」 characters
但取而代之的則是:
This string contains ¿Unicode¿ characters
這是失敗的由於全局數據庫設置?如果是這樣,有沒有改變這些設置的解決方法? (我測試了其他問題中找到的一些解決方案,例如試驗CAST
和TO_NCHAR
,並將腳本保存在顯式編碼爲UTF-8的頁面上 - 但這些策略都沒有成功。認爲的事實,我使用的是局部變量,從存在的問題區分這一點)
後續評論
laubster要求的輸出:
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET'
那輸出是WE8ISO8859P15
。
亞歷克斯·普爾詢問了客戶端和字符設置。
客戶端是SQL Developer。操作系統是Windows 10,我不能完全肯定到哪裏尋找客戶端字符設置 - 但也許答案是一樣的結果從laubster的查詢:WE8ISO8859P15
。
在任何情況下,這可能是一個模擬點。戰略(我從未聽說過)戰略。
我想我得到了我需要的東西。它看起來並不像亞歷克斯·普爾是傷害了點 - 但如果他想*後,作爲一個答案,我一定會給予好評,並標記爲正確的。
*我假設「他」根據形象。道歉,如果我錯了。
(你綁定變量聲明是一個紅鯡魚:你根本沒有使用它,因此只處理常規的VARCHAR2領域。)編輯你的問題從客戶端添加您的NLS_LANG設置,以及從SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER ='NLS_CHARACTERSET''的輸出。 – laubster
這是哪個客戶端,操作系統和客戶端字符設置是什麼?如果使用[文本文字的'n'text''版本](https://docs.oracle.com/database/121/SQLRF/sql_elements003.htm#SQLRF00218),會發生什麼? (不知道'var'是否支持這一點,但無論如何,你會在查詢中使用它。) –
問題已在上述評論的後續內容中進行了編輯。 –