Моей сессия SAS деталь: -SAS сеанс кодирование LATIN1 стенают Юникод
КОДИРОВАНИЕ = LATIN1
LOCALE = en_US
Я читаю зашифрованы имена клиентов, их расшифровок с помощью кода Java, который имеет , реализованный в коде sas с использованием javaobj.
data outlib.X1 (ENCODING = 'asciiany');
set inlib.INP1 (ENCODING = 'asciiany') end=eof;
length decryptedvalue $100;
declare javaobj jObj("<jarname>");
jObj.callstringmethod("<method>", FIRST_NAME , decryptedvalue);
run;
jObj.callstringmethod возвращает расшифрованное значение first_name в строки decryptedvalue. Я делаю экспорт proc в конце моего кода SAS и сохраняю все расшифрованные имена в виде файлов csv.
В последнем прогоне некоторые имена имеют специальные символы, например. Реально.
Это вызывает выполнение SAS на неудачу с ошибкой при слежении: -
ERROR: Transcoding failure at line 30 column 2.
ERROR: DATA STEP Component Object failure. Aborted during the EXECUTION phase.
Есть ли какой-нибудь способ, чтобы сделать SAS сессии (LATIN1) принимают эти символы Юникода? Могу ли я установить кодировку переменной decryptedvalue? Я не хочу запускать весь сеанс SAS в юникоде, используя sas_u8. Я только хочу принять эти символы. Даже чтение этих проблемных значений в виде пробела в порядке.
Я уже пробовал следующие вещи: -
Set inencoding = utf8 для имени-библа
Make КОДИРОВАНИЕ = 'asciiany' для ввода данных.
Любые входы будут полезны.
Заранее благодарен!
Вы пытались запустить SAS с кодировкой сеанса Unicode? Я не понимаю, почему это такая проблема? – Joe
Я пробовал работать с sas_u8, и дешифрование работает отлично. Но мой основной код имеет запрос redbift db, и они не работают со следующей ошибкой ** «Ошибка при попытке выполнить запрос: ОШИБКА: В идентификаторе допускаются только символы ASCII. Недопустимый символ ASCII: ef bf bd« **. На данный момент я разделил свой код sas на 2 части - один для красного смещения, а другой для дешифрования, который я запускаю с помощью sas_u8. Но это не приемлемое решение. – NVK
Хм, интересно. Я бы поднял этот последний вопрос при технической поддержке SAS, нет причин, по которым вы не должны подключаться к redshift (через соответствующие драйверы) из сеанса u8, драйвер должен обрабатывать преобразование ascii down-conversion. – Joe