自宅サーバー構築記
20.PHPの文字コード
a. PHPでpostgreSQLのDBを検索してWEBで表示するときの問題
- WindowsXP上のEclipseでLinuxのpostgreSQLのDBを検索してWEBで表示するPHPスクリプトを作り動作させてみたが、日本語の検索条件をフォームから入力してもエラーになる。Webフォームの文字コードはShift−JIS、DBの文字コードはSQL-ASCII、PHPはデフォルト(php.iniには文字コードに関して何も設定していない状態)になっている。PHP内部では文字コードの変換を行っていて、さらにpostgreSQLでもDBの文字コードに対応するように変換している。そこでShift-JIS⇒PHP内部コード⇒SQL-ASCIIとうまく変換してくれれば問題は起きないのだが、実際はそんなにうまくいかない。そこでphp.iniの[mbstring]の定義を行い、変換方法を確定する。基本的に入出力文字、PHP内部コード、DBの文字コードをEUC-JPに統一する。以下がその指定内容。
mbstring.language = Japanese
mbstring.http-input = EUC-JP
mbstring.internal-encoding = EUC-JP
mbstring.http-output = EUC-JP
mbstring.encoding_translation = On ⇒ internal-encodingを有効にする
output-handler = mb_output_handler ⇒ http-outputを有効にする
createdb -E EUC-JP db-name
- Eclipseの文字コードをEUC-JPにする。「設定」→「ワークベンチ」→「エディタ」のテキストファイルエンコードで「その他」を選択しEUC-JPとタイプインする。
HOME>インデックス
|