gpt4 book ai didi

encoding - 如何在 WLATIN1 编码的 SAS session 中使用 UTF-8 编码的文件?

转载 作者:行者123 更新时间:2023-12-03 23:52:41 24 4
gpt4 key购买 nike

目前,我们正在使用 WLATIN1 (Windows 1252) encoding在我们的 SAS session 服务器上(似乎没有即将转移到 UTF-8 )。

我有一个用 UTF-8 编码的 EXCEL 文件(从 Internet 数据库导出)并包含一个特殊字符 不支持 Wiki refernce ) 在 WLATIN1 encoding .我知道我可以使用不同的编码(如 UTF-8)读取 EXCEL 数据但仍然是 ODS将打印 =而不是 .

我想匹配一些包含这个特殊字符的字符串,但 SAS 当然不允许我本地使用这个字符。有什么办法可以规避这种情况吗?

MWE:假设EXCEL文件包含一个变量a和一个观察 a = 'this is a test ≥' :

data encoding;
set excel;

if a ='this is a test ≥' then
put 'it works';
else
put 'it does not work';

run;

这可以以任何方式解决吗?我试过 '(*ESC*){unicode "2265"x}'而不是 但无法让它工作。与往常一样,非常感谢任何帮助/想法!

编辑:
我们正在运行 SAS Release 9.4 TS1M5 .
目前EXCEL文件的读入使用 PROC IMPORT :
filename temp "*.xlsx" encoding="utf-8";

proc import datafile=temp out=quality dbms=excel replace;
run;

最佳答案

如果您在 SAS 服务器环境中,您将需要设置具有 Unicode 支持启动设置的服务器。

在桌面环境中,可以通过 SAS 开始菜单中的图标深处的 Unicode 支持来启动 session 。命令行是:

"C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" 
-CONFIG "C:\Program Files\SASHome\SASFoundation\9.4\nls\u8\sasv9.cfg"
nls\u8\ config 文件将包含一些只能在 session 启动时应用的编码设置行,以及支持 utf8 session 的 SAS dll 的路径。

-SET SASCFG "C:\Program Files\SASHome\SASFoundation\9.4\nls\u8"
-DBCS
-LOCALE en_US
-ENCODING UTF-8


在 Unicode session 中,以下示例代码的日志将显示 ≥ 和 = 之间的区别,并且 ODS 将输出 ≥。默认 SBCS session 中的相同代码 ≥ 映射到 = 即使代码编辑器显示 ≥。

LOG 窗口的字体应设置为 Consolas或其他支持 UTF-8 的字体。
data have;
input; a = _infile_; datalines;
this is a test ≥
run;

data want;
set have;

c1 = '≥';
c2 = '=';
put "NOTE: " (c:) (=);

r1 = rank(c1);
r2 = rank(c2);

put "NOTE: " (r:) (=);

if a = 'this is a test ≥'
then put "NOTE: " a 'it works';
else put "NOTE: " a 'it does not work';
run;
proc print data=want;
run;
--------------------
NOTE: c1== c2==
NOTE: r1=226 r2=61
NOTE: this is a test = it works

默认 (SBCS) session 中的相同代码显示 ≥ 将被转码为 =
NOTE: c1== c2==
NOTE: r1=61 r2=61
NOTE: this is a test = it works

增强型编辑器可能在所有情况下都支持 UTF-8,但是(我推测)在运行时提交被转码为 session 编码。

关于encoding - 如何在 WLATIN1 编码的 SAS session 中使用 UTF-8 编码的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55168434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com