我的SAS會話詳細信息: -SAS會話編碼LATIN1失敗的Unicode字符
編碼= LATIN1
LOCALE = EN_US
我讀加密的客戶名稱,解密他們使用Java代碼已經在使用javaobj的sas代碼中實現了 。
data outlib.X1 (ENCODING = 'asciiany');
set inlib.INP1 (ENCODING = 'asciiany') end=eof;
length decryptedvalue $100;
declare javaobj jObj("<jarname>");
jObj.callstringmethod("<method>", FIRST_NAME , decryptedvalue);
run;
jObj.callstringmethod返回字符串decryptedvalue中解密的first_name值。我在SAS代碼的末尾執行proc導出,並將所有解密的名稱存儲爲csv文件。
在上次運行中,一些名稱具有特殊字符,例如真實。
這是導致SAS執行失敗,以下錯誤: -
ERROR: Transcoding failure at line 30 column 2.
ERROR: DATA STEP Component Object failure. Aborted during the EXECUTION phase.
有一些方法,使SAS會話(LATIN1)接受這些Unicode字符?我可以設置 解密值變量的編碼嗎?我不想用sas_u8在unicode中運行我的整個SAS會話。我只想接受這些字符 即使將這些有問題的值視爲空白也可以。
我已經嘗試以下操作: -
設置inencoding = UTF8的LIBNAME
製作編碼= 'asciiany' 的輸入數據集。
任何輸入將是有用的。
在此先感謝!
您是否嘗試過使用Unicode會話編碼運行SAS?我不明白爲什麼會出現這樣的問題? – Joe
我試着用sas_u8運行,解密工作正常。但我的主代碼有紅移數據庫查詢,它們失敗,出現以下錯誤**「嘗試執行查詢時發生錯誤:錯誤:只有ASCII字符被允許在標識符中。無效的ASCII字符:ef bf bd」**。截至目前,我已將sas代碼分成兩部分 - 一部分用於紅移,另一部分用於解密,我使用sas_u8運行。但這不是一個可行的解決方案。 – NVK
嗯,有趣。我會用SAS技術支持提出後一個問題,沒有理由不能通過u8會話連接到redshift(通過適當的驅動程序),驅動程序應該處理ascii向下轉換。 – Joe