2008.04.01

.NetでOracleを使用した際の文字化けについて

ASP.NETでデータベース:ORACLEを使用した際に、
ORACLEからデータを取得し、画面に値を戻した場合、
「~」という文字が「?」に文字化けをしてしまうことがあります。

原因は、ORACLEのキャラクタセットがデフォルト(JA16SJIS)
の場合に、ORACLEの文字コードセットをShift-Jisに変換した場合、
「~」が「?」に変換してしまうとのこと。

対象法としては、Ora9.2以降ならば、データベースを作成する際に
文字コードを「JA16SJISTILDE」にし、環境変数を「NLS_LANG=JA16SJISTILDE」
とする。
もしくは.Net側のConfigファイル: responseEncoding="shift_jis" /> のShit-jisをutf-8にすることで
回避が出来るようです。(OSやら環境で違ってくるようですが・・・)

但し、既存のデータベースを利用する場合や、文字コードはShift-Jisという
指定があった場合、上記のような対処は取れません。
この場合は、無理やりプログラム上で「~」を置換してあげるようなロジックを
作成しましょう。
色々調べましたが、文字変換時に文字化けが発生するのはどうやら「~」だけの
ようですので・・・

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
jin