Utf 8 unicode字符的SAS会话编码LATIN1失败
我的SAS会话详细信息如下:- 编码=拉丁语1Utf 8 unicode字符的SAS会话编码LATIN1失败,utf-8,sas,transcoding,Utf 8,Sas,Transcoding,我的SAS会话详细信息如下:- 编码=拉丁语1 LOCALE=EN_US 我正在读取加密的客户名称,使用一个java代码对其进行解密,该代码 已使用javaobj在sas代码中实现 data outlib.X1 ( ENCODING = 'asciiany' ); set inlib.INP1 (ENCODING = 'asciiany' ) end=eof; length decryptedvalue $100; declare javaobj jObj("<jarna
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;
data outlib.X1(编码='asciiany');
设置inlib.INP1(ENCODING='asciiany')end=eof;
长度解密值$100;
声明javaobj jObj(“”);
jObj.callstringmethod(“”,名字,decryptedvalue);
跑
jObj.callstringmethod在字符串decryptedvalue中返回已解密的first_name值。我在SAS代码的末尾执行proc导出,并将所有解密的名称存储为csv文件
在最后一次运行中,一些名称具有特殊字符,例如RÉAL
这导致SAS执行失败,出现以下错误:-
错误:第30行第2列转码失败
错误:数据步骤组件对象失败。在执行阶段中止
有没有办法让SAS会话(LATIN1)接受这些unicode字符?我可以设定吗
decryptedvalue变量的编码?我不想使用SAS_u8以unicode运行我的整个SAS会话。我只想接受这些字符
即使将这些有问题的值读取为空白也可以
我已经试过以下几件事:-
提前谢谢 SAS技术支持部建议:- 在sasenv_本地文件中添加export EASYSOFT_UNICODE=YES 我们现在可以在SAS u8会话中运行整个SAS代码(包括SQL查询)
感谢大家的支持。您是否尝试过使用Unicode会话编码运行SAS?我不明白为什么会出现这样的问题?我试着用sas_u8运行,解密效果很好。但我的主代码有红移db查询,它们失败,出现以下错误**“尝试执行查询时出错:错误:标识符中只允许使用ASCII字符。ASCII字符无效:ef bf bd”**。到目前为止,我已经将sas代码分为两部分——一部分用于红移,另一部分用于解密,我使用sas_u8运行。但这不是一个可行的解决方案。嗯,很有趣。我会向SAS技术支持部门提出后一个问题,您没有理由不能从u8会话连接到红移(通过适当的驱动程序),驱动程序应该处理ascii下转换。谢谢@joe,我们已经向SAS技术支持部门提出了这个问题。同时,我的分析发现“Invalid ASCII char:ef bf bd”实际上是指BOM()。当我们运行sas_u8会话时,是否有停止此操作的选项?提前谢谢。