JIS X 0213:2004への対応について
Windows Vistaで正式採用されたJIS X 0213:2004によって、クライアント側で扱える文字が増えたわけだが、それをDBに格納しようとすると当然Database側にも対応が必要になってくる。
TinkITにそれ関係の記事が載っていたので、簡単にまとめてみる。
http://www.thinkit.co.jp/free/article/0707/14/1/
(SQLServer2005の場合) JIS2004 対応に関するガイドライン
- 文字のデータ型はnchar, nvarchar, nvarchar(max)を使わなければいけない。(char,varcharなどはダメ)
- 文字列定数に "N" プレフィックスを付加する。
- 関数、LEN、LEFT、RIGHT、SUBSTRINGの代わりに、len_s、left_s、right_s、sub_sを使う。
- 代換関数がないもの=STUFF(),REVERSE()
- サロゲートペア(補助文字)を含んだ検索(where文など)は正しく動かない。(規定の照合順序をJapanese_BINなどに変更すればOK)
(Oracle10gの場合)
ということで、Oracle10gのほうが圧倒的に簡単に済む。というか、SQLServer2005を使っていた場合には、アプリケーションを全部検証しないとダメだ。今後必ず問題になってくるだろう...
SQLServer2005を使っているアプリケーションでVista対応になってるものはちゃんとJIS2004対応になっているのだろうか心配...
(追記)
以前、OracleXEにCV.netを対応させるときにAL32UTF8の文字コードセットは調査・検証したのだが、Blogを見返してみると2006年2月とか3月とかにやっていたらしい...
UTF8の場合の実際のバイト数についても、2006-02-18(土)のBlogに書いてあった...
このときはVistaのことなど考えてもいなかったが、この時点でSJISからUTF8に対応しといてよかった...(^^;)
MEMO(66709)