Utf 8 unicode字符的SAS会话编码LATIN1失败

Utf 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

我的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("<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会话。我只想接受这些字符 即使将这些有问题的值读取为空白也可以

我已经试过以下几件事:-

  • 为libname设置inencoding=utf8

  • 对于输入数据集,Make ENCODING='asciiany'

  • 任何投入都是有用的


    提前谢谢

    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会话时,是否有停止此操作的选项?提前谢谢。