人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのURLエンコードにつきまして

[てすと] という文字列をurlencode()関数 でエンコードして%5B%E3%81%A6%E3%81%99%E3%81%A8%5Dにして
http://test.com/test/%5B%E3%81%A6%E3%81%99%E3%81%A8%5D/index.php
というディレクトリを生成しリンクを貼りました。
ですが、なぜかアクセスできません。
Index of / からURLを見てみると
http://test.com/test/%5B%E3%81%A6%E3%81%99%E3%81%A8%5D/index.php
ではなく
http://test.com/test/%%255B%25E3%2581%25A6%25E3%2581%2599%25E3%2581%25A8%255D/index.php

になっておりました。こちらなら正常にアクセスできるようです。
後者の方は、デコードすると文字コードがASCIIになっているようです。
(このサイトでデコードできます→http://home.kendomo.net/board/decode/decode.php)
前者の方は、デコードすると文字コードがUTF-8になっているようです。

(文字コードとかまったく興味ないし意味わかりません いつも無難にUTF-8にしとけばいいだけ)

とりあえず、ディレクトリ名に「%5B%E3%81%A6%E3%81%99%E3%81%A8%5D」のようなものを生成する必要があるのです。
この現象の原因・解決法を教えてください。

●質問者: ty2016
●カテゴリ:インターネット ウェブ制作
✍キーワード:A8 ASCII E3 INDEX PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 匿名回答0号
●80ポイント ベストアンサー

「%5B%E3%81%A6%E3%81%99%E3%81%A8%5D」っていうディレクトリを作ったでしょ?そうじゃなくて「[てすと]」っていうディレクトリを作らないと。

(UTF-8対応の)仮想端末でディレクトリを作っているなら、環境変数LANGがUTF-8になっていることを確認して、

mkdir '[てすと]'

でディレクトリを作成。

ファイルマネージャーを使ってディレクトリを作っているなら、UTF-8で作ってくれることを願って「[てすと]」って作ってみて。

◎質問者からの返答

済みません 当方が勘違いしていただけでした

日本語で正しかったんですね

普通に日本語で作ったものをurlencode()関数でエンコードしても、

アクセスできるという話でした


2 ● じゅぴたー
●20ポイント

サーバOSは何を使っていますか?


下記のようにmkdir関数で作成しましたか?

mkdir('/hogehoge/%5B%E3%81%A6%E3%81%99%E3%81%A8%5D', 0700);
◎質問者からの返答

>サーバーのOS何を使っていますか?

echo PHP_OS; で確認しましたがLinuxです。(レンタルサーバー)

?mkdir('/hogehoge/%5B%E3%81%A6%E3%81%99%E3%81%A8%5D', 0700);

?mkdir('/hogehoge/test', 0700);

に変えると正常に動作します。

Index of /hogehoge

を見ると、

?で作成したディレクトリが、

?%255B%25E3%2581%25A6%25E3%2581%2599%25E3%2581%25A8%255D に変わっていました。

だから当然のことながら、?で作成したものにはアクセスできません。

※尚、パーミッションは0700ではなく0755にしています。

0700では私もアクセスできなくなってしまいます^^;

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ