[PHP-users 318] Re: php4.0.6とPostgerSQL での日本語コードについて!(解決!)

Morihiko Inamine php-users@php.gr.jp
Thu, 28 Jun 2001 11:43:00 +0900


Morihiko Inamine さんは書きました:
>稲嶺と申します
>php4.0.6とPostgreSQL7.1(linux)で
>phpのスクリプトはSJISで書き
>PostgreSQLのコードはEUC-JPで行きたいと思っているのですが
>いざ、WindowsのIEで表示させるとスクリプトのecho();で書いた文字はSJISで表示され
>PostgreSQLより取得した日本語はEUC-JPで表示され、文字化けしてしまいます
>
ですがPostgreSQLに限ってですが
別の解決法が見つかりました
PostgreSQLのpg_set_client_encoding()関数を利用し、クライアント側の文字コード
をSJISにしてしまえば良いことが分りました!

PHPの記述コードはSJIS,PostgreSQLの文字コードはEUCで
実際に吐出されるHTMLコードはSJISという風に出来ました。

以下にphpのコードを示します
項目名の"name"には日本語文字列が入っています
<?php
$conn = pg_connect("host=lady port=5432 dbname=swsphpbase user=xxxx password=xxxxx");
$result = pg_set_client_encoding($conn,"SJIS");
$result = pg_exec($conn,"select kind_code,name from t_oskind");
for($x=0;$x < pg_numrows($result);$x++){
   $kind_code=pg_result($result,$x,"kind_code");
   $name     =pg_result($result,$x,"name");
   echo "kind_code[",$x,"]=",$kind_code," name[",$x,"]=",$name, "<BR>\n";
}
pg_close($conn);
?>

PHP.INIの以下の項目を修正してOKでした
output_buffering = Off
output_handler = 

mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
稲嶺盛彦(Morihiko Inamine)
ina@swsys.co.jp
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/