2016-11-11 5 views
1

マイSASセッションの詳細は以下のとおりです。 -SASセッションエンコーディングLATIN1は、Unicode文字のために、故障

ENCODING = LATIN1
LOCALE = EN_US

私は、Javaコードを使用してそれらを復号化、暗号化された顧客の名前を読んでいていますjavaobjを使用してがsasコードで実装されています。

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に返します。私はSASコードの最後にproc exportを行い、暗号化されたすべての名前をcsvファイルとして保存します。

最後の実行では、名前の一部に特殊文字があります。リアル。これは、SASの実行が次のエラーで失敗の原因となっている

: -

ERROR: Transcoding failure at line 30 column 2.

ERROR: DATA STEP Component Object failure. Aborted during the EXECUTION phase.

は、SASセッション(LATIN1が)これらのUnicode文字を受け入れるようにするいくつかの方法はありますか? にdecryptedvalue変数のエンコーディングを設定できますか?私はsas_u8を使って私のSASセッション全体をUnicodeで動かしたくありません。私はこれらの文字を受け入れるだけです これらの問題のある値を空白として読み込んでもOKです。

私はすでに、次のことを試してみました: - libnameを

  • メイクENCODING入力データセットのために= 'asciiany' の

    1. セットinencoding = UTF8。

    任意の入力が便利です。

    ありがとうございます!

  • +0

    UnicodeセッションエンコーディングでSASを実行しようとしましたか?なぜそれがそんなに問題なのか分からないのですか? – Joe

    +0

    私はsas_u8で実行しようとしました。しかし、私のメインコードはredshift dbクエリを持っていて、次のエラーで失敗しています** "クエリの実行中にエラーが発生しました:ERROR:識別子にASCII文字のみが使用できます。現在、私はsasコードを2つの部分に分割しています.1つはredshift用で、もう1つはsas_u8を使って実行する解読用です。しかし、これは実行可能な解決策ではありません。 – NVK

    +0

    うーん、興味深い。 SASテクニカルサポートで後者の問題を解決すると、u8セッションからの赤方偏移(適切なドライバ経由)に接続できないようにすべき理由はありません。ドライバはASCII形式のダウンコンバージョンを処理する必要があります。 – Joe

    答えて

    0

    SASテクニカルサポートでは次のように提案しています。 - sasenv_localファイルにエクスポートEASYSOFT_UNICODE = YESを追加しています。

    これで、sas u8セッションでSASコード全体(SQLクエリを含む)を実行できるようになりました。

    ご協力いただきありがとうございます。

    関連する問題