文字コードの変換について


CGIは、入力フォーム、データベース、結果の画面と下図の様な関係を持ちます。
①から④までが、どういう文字コード(文字セット)で表されているかは、其々の作成者との約束です。
通常、[1]入力フォームからのサブミットは、UTF-8で行う様にします。
これは、ブラウザの種類、WEBサーバの設定を考慮して決めます。

データベースの文字コードは、データベース固有の事情に左右されます。
当社のデータベースは、PostgreSQLなので、データベースソフトは、UTF-8に対応していますが、古いデータベースでは、
(それらを制御するアプリケーションの事情で)データがEUC_JPやUTF-8のものも有ります。
通常、[2]は、データベースの文字コードに従います。

結果の画面は、現実には、Windowsパソコンで作成する場合が多いので、UTF-8が多用されています。
又、結果が画面でなく、xml文書の場合は、UTF-8が好まれます(JavaScriptの事情で)。

これらの関係を考慮して、適切に文字コード変換を行わなければなりません。

当社のCGIでは、フォームからのデータは、一旦、UTF-8に変換します。
CGIは、データは、全てUTF-8で扱います。
DBに出力する時は、データベースのエンコードに合わせて変換し、DBから読み込む時は、DBのエンコーディングに
従って、UTF-8に変換します。
結果の出力は、設定Iファイルで定義されたエンコーディングに従って変換します。
結果の出力は、サブウエブ単位に指定されたエンコーディングとなるので、同じサブウエブに複数のエンコーデイングを
要求するページの混在は許可しません。
但し、xml要求の場合は、CGIのパラメータにcharset=xxxを指定する]事で、必要な文字セットのxmlを得る事ができます。