создать текстовый файл utf-8 из шага данных sas

У меня есть этот макрос, который создает файл json,
но, несмотря на то, что я указал encoding='utf-8' bom, я не получаю файл utf-8.

%macro json4datatables_useformat(ds,path,file,charvars,numvars)
    / 
    DES="json4datatables(ds,path,file,charvars,numvars)";

    /* creates a json with no headers
     * a bit like a csv without the first line
     * it takes thus less space
     * but you have to know which column is what
     */

    data _null_;
        length line $300;
        set &ds nobs=nobs end=end;
        file "&path.&file." encoding='utf-8' bom/**/ ;

        line = '[';

        %if &charvars ne %then %do;
            %do i=1 %to %sysfunc(countw(&charvars));
                %let charvar = %scan(&charvars, &i);
                %if &i ne 1 %then %do;
                    line = cats(line,',');
                %end;
                line = cats(line,'"',vvalue(&charvar),'"');
            %end;
        %end;
        %if &numvars ne %then %do;
            %do i=1 %to %sysfunc(countw(&numvars));
                %let numvar = %scan(&numvars, &i);
                line = catx(',',line,vvalue(&numvar));
            %end;
        %end;

        line = cats(line,']');

        if _n_=1 then put '{"data": [';
        if not end then put line +(-1) ',';
        else do;
            put line;
            put ']}';
        end;
        run;

%mend json4datatables_useformat;

Я заметил, что акценты отображаются как странные символы на веб-странице, где я отображаю файл json.
И проблема решается простым открытием файла json в возвышенном тексте и выполнением Файл>Сохранить с кодировкой>UTF-8. . (с спецификацией не требуется.)

Есть ли другой способ заставить кодировку utf-8?

РЕДАКТИРОВАТЬ: я использую SAS EG 7.1, SAS 9.3 в Windows.


person stallingOne    schedule 11.08.2016    source источник
comment
Я использовал ваш макрос и экспортировал данные с некоторыми гладкими символами. Notepad ++ говорит, что это UTF8, а браузер Chrome правильно отображает все символы. Какая у вас версия SAS?   -  person fl0r3k    schedule 11.08.2016
comment
Я думаю, это означает, что это, вероятно, связано с системой   -  person stallingOne    schedule 11.08.2016
comment
Какую кодировку использует ваш сеанс SAS? Теоретически это не должно иметь значения, но я считаю, что иногда полезно использовать сеанс UTF-8 вместо сеанса ANSI. Кроме того, какую версию SAS вы используете?   -  person Joe    schedule 11.08.2016
comment
Как найти кодировку сеанса SAS? Я использую SAS EG 7.1, SAS 9.3 в Windows.   -  person stallingOne    schedule 11.08.2016
comment
Хм, 9.3 должно хватить. Кодировку сеанса SAS в EG можно увидеть, щелкнув правой кнопкой мыши имя сервера в списке серверов (если он локальный, то локальный — это сервер) и выбрав свойства, затем вкладку программного обеспечения (видима, только если открыта). В нем указана кодировка.   -  person Joe    schedule 11.08.2016
comment
Кодировка сеанса SAS: watin1. Если вы знаете, как это изменить, я бы с удовольствием попробовал. (будет через 10 дней)   -  person stallingOne    schedule 11.08.2016
comment
@ooo Если это локальный SAS, вы можете изменить его, изменив настройки EG в отношении того, к чему он подключается; Думаю, проще всего изменить файл в \SASFoundation\9.3\sasv9.cfg так, чтобы он указывал на файл в \nls\u8 вместо `\nls\en` (думаю, EG оценит это). Если это сервер, вам придется поговорить с администратором вашего сервера.   -  person Joe    schedule 11.08.2016
comment
У меня не было проблем с сеансом wlatin2 и записью в utf8. Это что-то другое. Если я что-то получу, я дам вам знать. Кстати хороший макрос :)   -  person fl0r3k    schedule 12.08.2016


Ответы (1)


В вашем браузере нет соответствующего набора символов и/или шрифтов для отображения ваших данных.

Чтобы добавить язык, который вы хотите просматривать:

Панель управления -> Регион и язык -> Клавиатуры и языки -> Язык интерфейса -> Установить/удалить языки

person RubenHgar    schedule 12.01.2017