Если вы находитесь в среде SAS Server, вам необходимо настроить сервер с параметрами запуска поддержки Unicode.
В среде рабочего стола сеанс можно запустить с поддержкой Unicode из Icon в глубине меню запуска SAS.Командная строка:
"C:\Program Files\SASHome\SASFoundation\9.4\sas.exe"
-CONFIG "C:\Program Files\SASHome\SASFoundation\9.4\nls\u8\sasv9.cfg"
Файл конфигурации nls\u8\
будет содержать несколько строк с настройками кодирования, которые могут быть применены только при запуске сеанса, а также путь к библиотекам SAS, поддерживающим utf8session.
…
-SET SASCFG "C:\Program Files\SASHome\SASFoundation\9.4\nls\u8"
-DBCS
-LOCALE en_US
-ENCODING UTF-8
…
В сеансе Unicode в журнале примера кода ниже будет показано различие между ≥ и =, а ODS выведет ≥.Тот же код в сеансе SBCS по умолчанию, на который отображается ≥ =, даже когда редактор кода показывает ≥.
Шрифт окна 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) показывает, что ≥ будет транскодирован в =
NOTE: c1== c2==
NOTE: r1=61 r2=61
NOTE: this is a test = it works
Улучшенный редактор может поддерживать UTF-8 во всех случаях, но (Я размышляю), когда запускается представление, транскодируется в кодировку сеанса.