ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

JAVAの1.4.1以前と以降でSJISのマッピングが違う文字

2006-05-04 16:00:49 | 一人勉強会

 一人勉強会シリーズの、「日経SYSTEM」前についてきた付録、『システム構築完全読本」から、お勉強になりそうな話。
 今日は、2章2部「SQLインジェクションはパラメータ・クエリーで防ごう」。




その話題自体は、
 ASP.NETの場合、SqlCommandをつかってSQL文(パラメータは@をつけて)を指定し
         SqlParameterでパラメータの値を設定する

で、本に書いてないけど、
Java(JDBC)の場合はConnectionのprepareStatementでSQL文(パラメータは?)を指定
          その返り値のPreparedStatementを使って値をセットする

っていうことをすると、エスケープしてくれるのでOKと
(エスケープが目的なので、たった1回の処理でもPreparedStatementを使う)
言う話がのってるんだけど、これは、もうこのブログにもさんざん書いた話なので
(サニタイジングについて)、いいとして、今日は別の話。




その後にのっている話で、「文字化けを防ぐには」がお勉強内容。

JAVAのJDKにおいて、Shift_JISとは

JDK1.1.8、JDK1.2   SJIS
JDK1.2~JDK1.4.1 MS932(Windows-31J)
JDK1.4.1以降     SJIS

をさすんだそーな(P49)。

で、SJISとMS932でUNICODEへのマッピングが違うものは、SJISコードで
0x5c(半角の¥)、0x7e(半角の~)
0x815c,815f,8160,8161,817c,8191,8192,81ca
だそーな。(P47)

なので、

・これらの文字は、JDKのバージョンの違いによって、変換の問題が出る可能性がある。
・全部UNICODEにするというのが1つの解法
・ただしUNICODEにしても半角の¥とバックスラッシュは同じSJISコードなので問題がある

ってなことが載っていました。




今日のお勉強はここまで。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする