[PHP-users 14262] Re: getでの文字コード対策
Kouda @ Office PERSON
php-users@php.gr.jp
2003年 3月 25日 (火) 05:25:17 JST
> 大場です。
>
> #質問時に使ってるOS、そのバージョン、PHPのバージョン
> #データベースとそのバージョンを書くのは必須くらいに
> #思って欲しい…
すみません。うっかりしていました。
PHP 4.2.2
対策なしでも正常動作したのがNetscape 7.02
URLに全角文字が乗った途端文字化けしたのがIE 6.0.2
参考にまで、OS Windows2000(SP3)、DB PostgreSQL(バージョン不明)
> 何をどう試したのか書かれないと、あなたがしたことの
> どこがおかしいのか、誰もわかりませんけど?
あちこちのサイトをのぞいたところ、NetscapeとIEではURLの文字コードが
異なるらしい、と理解しました。
従って、URLに続けて&で変数値を渡してやると、IEの場合全角文字が化け
てしまうというのが原因だとわかりました。
で、ポップアップウィンドウとして呼び出したURL側で、受け取った文字列
の正体がわかりません。
どちらもmetaタグでEUC-JPを指定しており、また、親ウィンドウ、ポップ
アップ両方で、
i18n_http_input("EUC-JP");
i18n_http_output("EUC-JP");
と設定しています。
受け取った値の文字コードを i18n_discover_encoding でチェックすると、
ASCII と表示されるため、初心者としては頭を抱え込んでしまいます。
受け側(ポップアップウィンドウ fncGetAdr.php)で、
$txtAddress1 = mb_convert_encoding($txtAddress1, "EUC-JP","AUTO");
としてみたり、悪あがきで、
$txtAddress1 = urldecode($txtAddress1);
と上記の前に加えてみたり、逆に親ウィンドウ側Java Scriptで、
escape(document.frmBranch.txtAddress1.value)
と記述し、復元を試みました。マニュアル等を見ながら、上記のような記述
を組み合わせて(例えばAutoをUTF-8に変更したり)みたのですが、結果は
全敗です。
> コンパイル時のマルチバイト回りの設定がどうなっていて
> インストール後のphp.iniのマルチバイト回りの設定がどうなっていて
すみません。これ意味がよくわかりません。
'--enable-mbstring' '--enable-mbregex' '--enable-mbstr-enc-trans'
これのことでしょうか。
--
from Kouda@Office PERSON
PHP-users メーリングリストの案内