お世話になっております。
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は変更できません。
No.1ベストアンサー
- 回答日時:
$_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は何故か、インストール時に必ずエラーが出て
強制終了してしまうため使えないのです。(こちらの解決が先手なのかも)
有り難う御座います。
やってみましたが、$_SERVER['PATH_INFO']と全く同じ値でした。
$_GETなら問題なく受け取れるんですがね・・・
No.2
- 回答日時:
ANHTTPD?はApacheと環境変数の取り扱いが違うみたいなので
できれば統一した方がいいかと思います。
.htaccessが使えるなら入力値の自動変換を無効にするとか。
アドバイス有り難う御座います。
AN HTTPDでしたね・・・失礼しました。
AN HTTPDは残念ながら.htaccessは使えないようです。
オプション設定にもそれらしき項目は見当たりませんでした。
どうにかApacheに切り替えたいのですが・・・。
この質問は別のカテゴリですべきですね。
結局のところ、PATH_INFOでは英文や半角記号等以外は
受け取れないということでしょうかね;
もう少し、他のやり方を探してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Java VScodeのターミナルの文字化けについて 1 2022/09/27 22:19
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Excel(エクセル) 文字化け。メモ帳でUTF-8に変換後、エクセルへ貼り付けたいです。 3 2022/08/14 07:21
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- HTML・CSS <meta charset="utf-8"><!-- 文字化け防止ユニコード --> ?最近モバイル 1 2022/12/11 04:27
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
-
PHP8を使うと、大量のWarningが...
-
ワードプレスサイト PHP8.0.25...
-
ファイルの書き込みについて教...
-
if(preg_match("/[^0-9]/",$gu_...
-
アマゾンのような評価の星を選...
-
phpでcookieがうまく保存されない
-
ファイルアップロードの上限を...
-
PHPで訪問回数を表示するカウン...
-
PHPSpreadsheetを使って関数を...
-
記述のおかしいところを教えて...
-
php テーブルが作成できない
-
PHPのエラーの解消法について教...
-
【スプレッドシート】順位のつけ方
-
PHP MySQLに画像を直接保存
-
Q&Aサイトを作成していてURLの...
-
アップロードファイルの数に応...
-
PHPのセッション有効期限について
-
php 確認表示画面で値をSESSION...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エンコーディングについて
-
phpのhex2binについてphpで、ut...
-
ハシゴの「高」が「?」に置き...
-
PHPでCSV出力時の文字化け(一部)
-
$str=preg_replace('/\\u3000/'...
-
PHPの文字化けした文字だけ削除...
-
phpMyAdminで文字化け
-
【PHP】ファイル読み込みで...
-
MySQL文字コード
-
windowsXP、XAMPPでメーラーMer...
-
i18n_convert と mb_convert_e...
-
データベースから取り出した日...
-
scandir関数取得結果の文字化け
-
PHPフォーム→PHP確認画面で...
-
文字化け
-
header("location~")をPOSTで...
-
PHPExcelで日本語(漢字)ファ...
-
mysql utf8、php・euc-jp で出...
-
PHPの文字コード (php.iniの...
-
XML出力時の日本語一部文字化け
おすすめ情報