[PHP-users 33155] 文字化けで困っています

marina.999.mina.10.ub @ nifty.com marina.999.mina.10.ub @ nifty.com
2008年 1月 25日 (金) 11:42:10 JST


皆さん今日は。
渡辺と言います。

4、5年前に、Apache+PHP+PostgreSQL でWEB開発をしていました。
最近また、開発する事になり環境を構築しているのですが、文字化け
でかなり悩んでいます。
今更、文字化けで投稿するのもお恥ずかしい限りなのですが、どうに
も解決できず、皆さんのお力をお貸し下さい。

環境は、Solaris9+Apache/2.0.61+PHP/4.4.7+PostgreSQL/7.4.18 です。
各configureは以下の順番で実施、PostgreSQLでDB構築後、Windows側で
insert文を作成し、ftp(asc)で転送し、EUCへ変換してDBに挿入してい
ます。
そして、DBを検索して表示するPHPソースをFTP(asc)で転送しブラウザ
で確認します。

そして、php.ini の設定を以下の設定内容やら様々なパターンで変更し
ては、画面に表示させたのですが、必ず、DB文字が化けるか、PHPソース
に記載した文字が化けるかどちらかです。


===> Apache configure
./configure \
--prefix=/usr/local/httpd-2.0.61 \
--enable-layout=Apache \
--enable-modules=all \
--enable-rewrite --enable-ssl --enable-so

===> PostgreSQL configure
./configure \
--prefix=/export/db/postgresql-7.4.18 \
--enable-multibyte=EUC_JP \
--with-perl  \
--enable-syslog \
--without-readline

ln -s /export/db/postgresql-7.4.18 /export/db/pgsql
PGLIB=/home/db/pgsql/lib
PGDATA=/home/db/pgsql/data
PG=/home/db/pgsql

initdb -E EUC_JP
createdb -E EUC_JP
createuser -a -d watanabe
createdb -E EUC_JP -O watanabe testdb


===> PHP configure
./configure \
--prefix=/usr/local/php-4.4.7 \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-pgsql=/export/db/pgsql \
--enable-mbstring \
--enable-mbregex \
--with-gettext=/usr \
--with-iconv=/usr/local

mbstring
Multibyte Support  enabled
Japanese support  enabled
Simplified chinese support  enabled
Traditional chinese support  enabled
Korean support  enabled
Russian support  enabled
HTTP input encoding translation  enabled
Multibyte (japanese) regex support  enabled

output_buffering = On
output_handler = mb_output_handler
default_charset = "SJIS"

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbregex.encoding=EUC-JP

===>PHP ソース
HTML文は敢えて入れていません。
また、heder関数は使用していません。


if (!($cn = pg_connect("host=localhost dbname=testdb user=watanabe")))
{
    die;
}

// PostgreSQL Select
$sql = "select * from tbl_user";
if (!($rs = pg_exec($sql))) {
  die;
}

// PostgreSQL Get Records
$ct = pg_numrows($rs);
for ($i = 0; $i < $ct; $i++) {
    $item = pg_fetch_array($rs, $i);
    print ${item[0]} ;
    print ${item[1]} ;
    print ${item[2]} ;
}

// PostgreSQL Disconnect
pg_close($cn);


PHP-users メーリングリストの案内