2016-11-11 10 views
1

Моей сессия 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. Я только хочу принять эти символы. Даже чтение этих проблемных значений в виде пробела в порядке.

Я уже пробовал следующие вещи: -

  1. Set inencoding = utf8 для имени-библа

  2. Make КОДИРОВАНИЕ = 'asciiany' для ввода данных.

Любые входы будут полезны.

Заранее благодарен!

+0

Вы пытались запустить SAS с кодировкой сеанса Unicode? Я не понимаю, почему это такая проблема? – Joe

+0

Я пробовал работать с sas_u8, и дешифрование работает отлично. Но мой основной код имеет запрос redbift db, и они не работают со следующей ошибкой ** «Ошибка при попытке выполнить запрос: ОШИБКА: В идентификаторе допускаются только символы ASCII. Недопустимый символ ASCII: ef bf bd« **. На данный момент я разделил свой код sas на 2 части - один для красного смещения, а другой для дешифрования, который я запускаю с помощью sas_u8. Но это не приемлемое решение. – NVK

+0

Хм, интересно. Я бы поднял этот последний вопрос при технической поддержке SAS, нет причин, по которым вы не должны подключаться к redshift (через соответствующие драйверы) из сеанса u8, драйвер должен обрабатывать преобразование ascii down-conversion. – Joe

ответ

0

Техническая поддержка SAS предложила следующее: - Добавление экспорта EASYSOFT_UNICODE = ДА в файл sasenv_local.

Теперь мы можем запустить весь код SAS (включая SQL-запросы) в сеансе sas u8.

Спасибо всем за вашу поддержку.

 Смежные вопросы

  • Нет связанных вопросов^_^