【问题标题】:Importing a UTF-8 XML file into SAS, how to set encoding?将 UTF-8 XML 文件导入 SAS,如何设置编码?
【发布时间】:2016-03-16 08:02:53
【问题描述】:

首先我不是SAS程序员,如果这个问题太简单或难以理解,请见谅!

我有一个应用程序,它创建要读入 SAS (9.3) 的 UTF-8 编码 XML 文件(和映射文件)。这些文件可以包含以下字符(注意小于或等于):

<DocumentElement>
  <DATA>
    <TEXT>≤ 50 %</TEXT>
  </DATA>
</DocumentElement>

我们有外部第三方试图读取这些文件,但我知道 SAS 的默认编码是 Wlatin1。

我尝试根据 SAS 文档为他们提供一些选项,以了解在读取这些文件时要指定哪些选项,但我似乎无法获得正确的编码选项组合。基本上我想将具有给定 MAP 的 XML 导入 SAS 中的数据集,保留 UTF-8 字符编码。

假设我们使用的是 libname xml,docs 建议如下读取 xml:

filename NHL 'C:\My Documents\XML\NHL.xml';
filename MAP 'C:\My Documents\XML\NHL.map';
libname NHL xml xmlmap=MAP;

proc print data=NHL.TEAMS; 
run;

我必须对哪些语句应用编码选项,(我已尝试使用 XMLENCODING、INENCODING 和 OUTENCODING 的 libname 语句

  • 我刚刚注意到有一个 ENCODING 标志(而不是上述选项)是我应该使用的吗?

【问题讨论】:

    标签: xml encoding utf-8 import sas


    【解决方案1】:

    好吧,我想我想通了。

    事实证明 SAS 有一个会话编码,如果输入文件不匹配,它将尝试将数据转码为该编码。使用 UTF-8 会话编码运行 SAS 可以避免所有这些问题,然后您可以指定 ENCODING= 选项,如果需要任何文件(我不必这样做,因为它们已经是 utf-8)。

    SAS 有一篇关于此here 的论文。

    【讨论】:

      【解决方案2】:

      无论在 sas 会话期间使用哪种编码,您都可以使用filenameencoding= 选项,该选项将告知 sas 该外部文件使用的编码。它不会影响用于在 sas 表中写入数据的编码,但会确保正确读取输入文件。

      filename NHL 'C:\My Documents\XML\NHL.xml' encoding="utf-8";
      filename MAP 'C:\My Documents\XML\NHL.map' encoding="utf-8";
      

      但请注意,SAS 要求存在 utf-8 BOM 字符。

      【讨论】:

        猜你喜欢
        • 2015-05-18
        • 2011-06-30
        • 1970-01-01
        • 2011-03-16
        • 2015-06-13
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多