アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっております。

Wikipedia等のようにアクセスする際にURLに直接書いた日本語を
PATH_INFOで受け取って処理をしたいのですが、うまくいきません。
試しに、

echo $_SERVER['PATH_INFO'];
echo mb_convert_encoding($_SERVER['PATH_INFO'],"utf-8","sjis");
echo urldecode(mb_convert_encoding(urlencode($_SERVER['PATH_INFO']),"utf-8","sjis"));

とした、BOM付UTF-8のPHPファイルに、

http://~/test.php/日本語

で[日本語]を色々変えてアクセスすると、
一行目と三行目は同じ結果になり、二行目だけ異なった結果となります。
一・三行目が上手く表示された時は二行目が文字化けしており、
一・三行目が文字化けした時は二行目が正常に表示されています。
(全てが文字化けすることもあります)
どのようにすれば文字化けが起こらず、うまく受け取れるのかが分かりません。

本当はUTF-8ではなく、EUC-JPで行いたいのですが
EUCはほとんどの場合、文字化けしてしまいます。

どのようにすれば良いのでしょうか。ご教授を宜しくお願い致します。
なお、php.iniは変更できません。

A 回答 (2件)

$_SERVER['REQUEST_URI']にurlencodeされたままのデータがあると思うので


それを切り出して使うのはどうでしょうか?

この回答への補足

すみません、レンタルサーバー(Apache)の方で試してみたら「urlencodeされたままのデータ」が取得できました。
ローカルの環境がHTTPD(+WindowsXP)だからでしょうか?

php.iniで、

$_SERVER["REQUEST_URI"] =
$_ENV["REQUEST_URI"] =
$_SERVER["ORIG_REQUEST_URI"] =

をprependしたところ、

C:\~\test.php

と表示されましたが、肝心の[/日本語]の部分が得られません。

HTTPDでは無理なのでしょうか。
実際の稼動時はレンタルサーバーなのですが、
ローカルで動作チェックが出来ないのは辛いものがあります・・・
Apacheは何故か、インストール時に必ずエラーが出て
強制終了してしまうため使えないのです。(こちらの解決が先手なのかも)

補足日時:2006/09/24 23:50
    • good
    • 0
この回答へのお礼

有り難う御座います。
やってみましたが、$_SERVER['PATH_INFO']と全く同じ値でした。
$_GETなら問題なく受け取れるんですがね・・・

お礼日時:2006/09/24 23:16

ANHTTPD?はApacheと環境変数の取り扱いが違うみたいなので


できれば統一した方がいいかと思います。
.htaccessが使えるなら入力値の自動変換を無効にするとか。
    • good
    • 0
この回答へのお礼

アドバイス有り難う御座います。

AN HTTPDでしたね・・・失礼しました。
AN HTTPDは残念ながら.htaccessは使えないようです。
オプション設定にもそれらしき項目は見当たりませんでした。
どうにかApacheに切り替えたいのですが・・・。
この質問は別のカテゴリですべきですね。

結局のところ、PATH_INFOでは英文や半角記号等以外は
受け取れないということでしょうかね;
もう少し、他のやり方を探してみます。

お礼日時:2006/09/25 00:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!