2012年9月8日土曜日

Oracle~Accessでの文字化け(チルダ、WAVEダッシュ)

OracleデータベースをリンクテーブルにてAccessから参照する仕組みです。
Oracle側の文字コードがUTF8のため、クライアントPC側もNLS_LANG=AL32UTF8、としていたのですが文字化け問題が発生。
波線・チルダ・WAVE DASH ⇒ 一つのカラムに含まれるだけで、行全体が♯DELETED

【解決策】
NLS_LANG = JAPANESE_JAPAN.JA16SJISTILDE

(クライアントPCの環境変数のみ設定)
とすることで、無事表示できました。
そもそもWindows環境ではUTF8は取り扱いが難しいため、割り切ってDBにはUTF8で格納(正しJIS第2水準までとして入力チェック)、Accessから見せる場合はOracle Clientによる文字コード変換結果、SJIS(TILDE)として見せる、という方式にしました。