お世話になっております。
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ランキング
-
PHPでCSV出力時の文字化け(一部)
-
PHPの文字コード (php.iniの...
-
phpのhex2binについてphpで、ut...
-
エンコーディングについて
-
onedrive にexcelファイルをア...
-
PHPで新しいウインドウで開く命...
-
フォントの色を変えるには?
-
PHP8を使うと、大量のWarningが...
-
ImageCreate関数が undefined f...
-
PHP4対応のサーバーではinclude...
-
現在位置より2つ上のディレク...
-
<HTML>~入る タグ が無いから ...
-
これの対応OSを教えて下さい。p...
-
3つ以上の論理積は利用可能なの...
-
PHPからMSSQLへの接続結果の文...
-
CFileDialogの最初のディレクト...
-
PHP MySql ページング
-
form actionで二つ送信先を指定...
-
VBAでJPGサイズ変更
-
拡張子php画像をjpg画像等に変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エンコーディングについて
-
phpのhex2binについてphpで、ut...
-
ハシゴの「高」が「?」に置き...
-
PHPでCSV出力時の文字化け(一部)
-
$str=preg_replace('/\\u3000/'...
-
PHPの文字化けした文字だけ削除...
-
phpMyAdminで文字化け
-
MySQL文字コード
-
【PHP】ファイル読み込みで...
-
windowsXP、XAMPPでメーラーMer...
-
i18n_convert と mb_convert_e...
-
PHPフォーム→PHP確認画面で...
-
データベースから取り出した日...
-
scandir関数取得結果の文字化け
-
文字化け
-
XML出力時の日本語一部文字化け
-
PHPの文字コード (php.iniの...
-
header("location~")をPOSTで...
-
PHPExcelで日本語(漢字)ファ...
-
mysql utf8、php・euc-jp で出...
おすすめ情報