2017-11-10 40 views
2

SQL Server 2012インスタンスに接続するライブラリがあります。登録されたテーブルの1つに国際アドレスが含まれているため、nvarcharカラムに非ラテン文字(中国語、ロシア語など)を含むことができます。エンタープライズガイドを使用してテーブルに接続すると、非ラテン文字が表示されません。SASでwlatin1エンコードのセッションでユニコード文字を読み取る

wlatin1のenフォルダではなく、utf-8という既定のエンコーディングを持つu8 nlsフォルダを指すように、SAS Foundation sasv9.cfgを変更しようとしました。

しかし、ユーザーはwlatin1エンコードで書かれたデータセットにアクセスできません。 sasv9.cfgファイルを 'en' nlsフォルダに戻すと、問題が解決されます。

は、私は、ユーザーが使用可能ないくつかのアプローチを持ってutf-8?

おかげ

+0

なぜユーザーはu8セッションでWLATIN1データセットを読み取ることができないのですか?それは私には間違っているようです。 SASがそこで助けてくれるかもしれません。 – Joe

+3

ローカルSASでEGを使用しているのか、サーバーに接続していますか? SAS管理者に、異なるエンコーディングを使用する2つのアプリケーションサーバーを設定させることができます。 – Tom

+0

@Joe - wlatin1からutf8への変換に問題があります。私の現在のプロジェクトでそれらを経験しています。 –

答えて

3

としての個々のセッションを開始することで、これをゲームに得ることができますそこの方法です。 1つはinencoding=utf8library optionを使用することです。

これが失敗した場合は、encoding=utf8dataset optionを試してみることができます。

最後の手段として、あなたは例えば、特定の変数を変換するためにkcvtfunctionを使用することができます。

kcvt(YourVariable,'utf8','wlatin1') 

ことが可能ですがあなたは、設定ファイルを更新せずにワークスペースセッションのエンコーディングを変更することはできませんクライアントのコンテキストを設定してストアドプロセスセッションを「ゲーム」する - locale gotchaを参照してください。

+0

+1。残念ながらまだ喜んでいないので、セッションやバストの設定ファイルのデフォルトのエンコードでなければなりません。私はそれについてSASと連絡を取り合うつもりです。 – TJB

+0

もう1つ試してみる - トランスコードを行う前に変数の長さを増やしてください。ダブルバイト文字の中には、(以前の)シングルバイトエンコーディングでより多くのスペースを取るものもあります。 –

関連する問題