• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

SQLインジェクションを根絶!セキュア開発の極意

第9回■上流工程で文字集合仕様と文字エンコーディングを決定する

文字コードに関する注意点(5)

2009/03/17 日経コミュニケーション

 今まで4回にわたって文字コードに関する問題を解説してきた。ここでいったん,今まで説明した文字コードによる問題を一覧表としてまとめよう。

表1●文字コードに起因する問題のまとめ

問題の発生個所問題の原因対策
文字集合多対一の変換文字集合の変換をしない
文字エンコーディング不正なエンコーディング入力値をチェックする
不完全な日本語処理正しいマルチバイト文字の処理を行う
 アプリケーションでの処理
 マルチバイト文字に対応した処理系

 これらの対策のうち,ここでは「文字集合の変換を伴う変換をしない」など,アプリケーション全体の文字コードの取り扱いについて上流工程で留意すべき内容について説明しよう。「入力値のチェック」については次回以降,「入力値の検証」の項で詳しく説明する。「アプリケーションでの正しいマルチバイト文字の処理」については,個別の処理内容の項で説明する。

 文字コードの取り扱いについて,上流工程で留意すべき点としては,次の三つが挙げられる。

  • 要求仕様として文字集合を定義する
  • 端末がサポートする文字集合を確認する
  • 実装に用いる文字エンコーディングを決定する

 まずアプリケーション仕様として,処理対象となる文字集合を規定する必要がある。日英語以外の韓国語や中国語,アラビア語などの対応が必要な場合はUnicodeを選択するしかない。さらに日本語だけの場合でも,例えばJIS X 0201+JIS X 0208はJIS第2水準まで,JIS X 0201+JIS X 0213はJIS第4水準までというように,文字集合によって使える漢字の種類が異なる(表2)。このため,どこまでの漢字に対応するかを要求仕様として決定する必要がある。

表2●各文字集合が扱える文字の種類

対象文字文字集合文字エンコーディング
英字,JIS第2水準までの漢字JIS X 0201+JIS X 0208EUC-JP,UTF-8
同上+NEC IBMの拡張文字マイクロソフト標準キャラクタセットEUC-JP,UTF-8
英字,JIS第4水準までの漢字JIS X 0201+JIS X 0213 UTF-8
韓国語,中国語,アラビア語…UnicodeUTF-8

 JIS第3,4水準に対応する文字エンコーディング規格としてはShift_JISの拡張版であるShift_JIS-2004などが規定されているが,これらはWindowsなどではサポートされていない。このため,Windows上でJIS X 0213の漢字を使用するには,Unicodeを利用することになる。

端末側の対応できる文字集合を確認する

 次に考慮すべき項目は,ユーザーが利用するOSやブラウザ,その他のソフトウエアの種類と,それらが対応する文字集合である。

 例えばWindowsを対象とする場合でも,Windowsのバージョンによって対応する文字集合が異なる。Windows VistaはUnicode 3.2,Windows XPはUnicode 3.0という具合だ(表3)。

表3●代表的な Windows と Unicode,および JIS の関係
JIS X 0213:2004/Unicode 実装ガイド」より引用

Windows のバージョンUnicode のバージョン対応 JIS 規格
Windows 98非対応JIS X 0208:1990
JIS X 0212:1990
Windows NT 4.0 SP 4Unicode 2.0
Windows 2000Unicode 2.1
Windows XPUnicode 3.0
Windows Server 2003
Windows VistaUnicode 3.2JIS X 0208:1990
JIS X 0212:1990
JIS X 0213:2004

 Mac OS X やLinuxなどをサポートする場合は,対象OSやディストリビューションが対応している文字集合を確認する。さらに,電子メールへの対応や携帯電話のブラウザを対象とする場合は,個別の対応が必要となる。

 日本語の電子メールの文字エンコーディングにはISO-2022-JPが広く利用されている。携帯電話に搭載されるブラウザには伝統的にShift_JISが使われてきた。最近でこそ電子メール・クライアント(メーラー)や携帯電話向けブラウザにもUTF-8対応のものが増えてきたが,非対応のソフトもまだ多数使用されている。この状況を考えると,不特定多数を対象とするサービスでは,今まで通りJIS系の文字エンコーディングを使用する方が無難だろう。

 このように,Webアプリケーション開発言語がUnicode対応を進める一方で,JIS系文字エンコーディングにも対応しなければならない。

ここから先はITpro会員(無料)の登録が必要です。

次ページ 文字エンコーディングに関する現実的な実装パターン...
  • 1
  • 2
  • 3

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

  • 【速報】

    メルカリが不正取引対策、現金など出品監視強化に人員倍増へ

     メルカリは2017年4月27日、現金の出品をはじめとする不正取引への対策を発表した。現行貨幣やパチンコ特殊景品の出品禁止、電子マネーなど不正利用につながる恐れのある出品の監視強化などが柱だ。監視や問い合わせ対応の要員も、現行の200人超の体制を2年以内に倍に増やす。

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

クライアント/OA機器

ネットワーク/通信サービス

セキュリティ

もっと見る