スキップしてメイン コンテンツに移動

面倒くさいORACLEの文字化け状況

ORACLEはそもそもUTF-8をサポートしてほかの言語はサポートはしているって書いてますが親切ではないようです。

現在サーバー側は昔からUS7ASCIIに設定して日本語を入れてしまい、データは7ビットASCIIモードで読み取りながら日本語のコートがOS側とクライアント側で変換しない必要があります。

クライアント側で文字化けの解決にはNLS_LANGの設定が効くクライアントが必要ですが、一部の有料クライアントにはサポートするようです。

接続構造は参考に
https://www.oracle.com/technetwork/jp/content/charcterset-250314-ja.pdf
の19スライドのように

クライアントからNLS_LANGをUS7ASCIIに設定しても
その設定した言語にもらったUTF-8のデータをクライアントが変換すると
NLS_LANGを設定しても意味がないようです。

ORACLE SQL Developerがこの様です。

ODBCと直接接続は必ずUTF-8に変換してしまうのでUS7ASCIIになっているDBからはクライアントをいくら変換しても文字化けのままです。

必ずOCI接続を通じてクライアント側から読み取らないとUS7ASCIIは勝手に変換されますね。

この全ての条件が満たした無料クライアントはA5mk2の2.9.1バージョンだけですね。


2.9.1 バージョンでサーバーを設定する場合Uicode変換を強制に無視するオプションがあります。
多分このバージョンの時点ではUTF-8をメインにして設計したDBが少なかったから文字化け対応のためできたオプションでしょう。

しかし、A5mk2の新しいバージョンにもまた結果の変換をしないオプションがなくなって文字化けしてしまいます。開発者はもうUTF-8ではないDBはないと思ってるでしょう。まだまだ残ってますよ~。

クライアント側からの変換などに参考になればと思います!



まだ直接お仕事になさってますか?
もう遅いです!ソフトウェアロボットにお仕事を任せてどの位自分の作業分量が減ってるかをご確認ください!




コメント