読者です 読者をやめる 読者になる 読者になる

misc.log

日常茶飯事とお仕事と

SJIS設定のOracle DBにいろいろ文字を突っ込んだ時の記録

業務日誌 業務日誌.NET DB

文字コードがらみの調べ物をしていたときのメモを転記しておきます。Oracle 10gをキャラクタセット「JA16SJISTILDE」で設定し、そこにVB.NETから変な文字(笑)を突っ込んだ時に文字がどう化けるかの実験結果です。全角やら半角やらって用語についてはとりあえず目をつぶってください。わかりやすさ優先です。

SJISに無い文字をSJIS設定のOracleに入れた結果

  • UTF-16サロゲートペア文字「ほっけ」… 全角「?」2文字。
  • JIS2004追加文字、森鴎外の「おう」(クチが3つの方)… 全角「?」1文字
  • UTF-16、コード「20AC」(半角ユーロ記号)… 全角「?」1文字

ちなみになぜ化けるかというと、Shift-JISに対応する文字が無いからです。

このあたりについては、Oracleが公開しているセミナー資料にも記載されています。

【セミナー資料】Oracle文字化け対策 Windows 7もバッチリ!
https://blogs.oracle.com/oracle4engineer/entry/oracle_windows_7

資料はPDF。その29ページに化ける場合の例が出ています。

.NETのエンコーダーだとどうなるか?

参考までに……。.NET Frameworkが持つエンコーダーで文字変換してみた場合、上記の文字は半角の「?」(コード"3F")に化けました。

このあたりにセンシティブなシステムを組む場合には、事前に十分な下調べが必要と考えます。

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)