Oracle
Oracle 到 T-SQL OPENQUERY 特殊字元轉換問題
我正在努力弄清楚我的連結伺服器上的字元編碼問題可能來自這裡。ZPDT_PAT_ALPHA 列的末尾應該有一個度數符號,如 DUMP 所示。
SELECT *, CHAR(176) FROM OPENQUERY([R_Pronto], 'SELECT DUMP(ZPDT_PAT_ALPHA), ZPDT_PAT_ALPHA FROM LINKED.ZCUSPRODATTR0')
這是 NLS 參數。NLS_LANG 在系統資料庫“AMERICAN_AMERICA.WE8MSWIN1252”中設置
以及使用 Microsoft OLE DB Provider for ODBC Drivers 的連結伺服器設置
我很感激任何關於我可以調整什麼以使特殊字元正確顯示的指示。不幸的是,我無權訪問 Oracle DB 進行任何更改。
位於該數據庫之上的應用程序能夠顯示該字元 - 我相信它直接與 Oracle 互動。
謝謝
NLS_LANG
由於這些答案中描述的原因,解決方案是將系統資料庫中的值更改為“AMERICAN_AMERICA.US7ASCII”:現在角色正在正確地通過。
謝謝@wernfried-domscheit!
您發布的 NLS 參數用於 Oracle 客戶端連接。由於您實際上並未使用 Oracle 客戶端,因此我懷疑它們是否相關。(它們看起來像預設值。)要確認數據庫字元集,請執行:
從 NLS_DATABASE_PARAMETERS 中選擇值,其中 parameter=‘NLS_CHARACTERSET’
如果它是 Oracle 的最新版本,我希望它會說“AL32UTF8”,即 UTF-8。
如果是這樣,您的問題可能是嘗試轉換 UTF-8?nvarchar 儲存為 UCS-2。我無法編寫程式碼,因為我沒有合適的測試環境,但可能類似於:
declare @result nvarchar(255); set @result = (select... )
假設它是一個單例選擇。也許嘗試顯式轉換為 nvarchar?SQL Server 2019 有一些 UTF-8 支持,不過我還沒玩過。
高溫高壓