我有一些代码,可以从存储在数据库表中的部分组成 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;
检查您的 SAS 会话编码
proc options option=encoding;
run;
在 Windows 中,默认图标“SAS 9.4(英文)”是
ENCODING=WLATIN1
。
使用图标“SAS 9.4(Unicode 支持)”启动 SAS,会话将以
ENCODING=UTF-8
运行
这应该使
recfm=n
使用会话编码。