SAS 文件和选项 RECFM=N 编码 =“utf-8 --> 对于使用 RECFM=N 打开的文件,忽略 ENCODING 选项

问题描述 投票:0回答:1

我有一些代码,可以从存储在数据库表中的部分组成 XML。我通过带有选项 RECFM=N 的 FILE 命令导出 XML,以便 CRLF 字符不会出现在末尾。 XML 采用 UTF-8 编码,但 sas 采用 WLATIN2。

如果我使用设置RECFM=N,那么SAS会提示encoding = UTF=8。如果我不使用 UTF8 编码,则 XML 包含无效字符...

如何以UTF8导出XML?

proc sql noprint;
select distinct PROCESS_ID
into :g_processIDList separated by ' '
from out_lib.Dbn_xml_data;
quit;

%put &g_processIDList.;


%macro DAR_XML_PROCESSING1;
    %if %length(&g_processIDList.) ne 0 %then %do;
        %do i=1 %to %sysfunc(countw(&g_processIDList., ' '));           
            %let l_processID=%scan(&g_processIDList.,&i,%str( ));
            %put processing: &l_processID.;
            
            data HELP;
                set out_lib.DBN_XML_DATA (where=(PROCESS_ID = "&l_processID."));
            run;

            proc sort data=HELP out=HELP (keep=XML_CONTENT);
            by PART_ID;
            run;

            filename out "\\somePath\&l_processID..xml" RECFM=N encoding="utf-8";
            data _null_;
              file OUT;
              set HELP;
              put XML_CONTENT;
            run;
    
        %end;   
    %end;
    %else %do;
        %put [NOTE]: nothing to process!!;
    %end;
%mend DAR_XML_PROCESSING1;

%DAR_XML_PROCESSING1;
xml file utf-8 sas export
1个回答
0
投票

检查您的 SAS 会话编码

proc options option=encoding;
run;

在 Windows 中,默认图标“SAS 9.4(英文)”是

ENCODING=WLATIN1

使用图标“SAS 9.4(Unicode 支持)”启动 SAS,会话将以

ENCODING=UTF-8

运行

这应该使

recfm=n
使用会话编码。

© www.soinside.com 2019 - 2024. All rights reserved.