[てすと] という文字列を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」のようなものを生成する必要があるのです。
この現象の原因・解決法を教えてください。
「%5B%E3%81%A6%E3%81%99%E3%81%A8%5D」っていうディレクトリを作ったでしょ?そうじゃなくて「[てすと]」っていうディレクトリを作らないと。
(UTF-8対応の)仮想端末でディレクトリを作っているなら、環境変数LANGがUTF-8になっていることを確認して、
mkdir '[てすと]'
でディレクトリを作成。
ファイルマネージャーを使ってディレクトリを作っているなら、UTF-8で作ってくれることを願って「[てすと]」って作ってみて。
「%5B%E3%81%A6%E3%81%99%E3%81%A8%5D」っていうディレクトリを作ったでしょ?そうじゃなくて「[てすと]」っていうディレクトリを作らないと。
(UTF-8対応の)仮想端末でディレクトリを作っているなら、環境変数LANGがUTF-8になっていることを確認して、
mkdir '[てすと]'
でディレクトリを作成。
ファイルマネージャーを使ってディレクトリを作っているなら、UTF-8で作ってくれることを願って「[てすと]」って作ってみて。
済みません 当方が勘違いしていただけでした
日本語で正しかったんですね
普通に日本語で作ったものをurlencode()関数でエンコードしても、
アクセスできるという話でした
サーバ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では私もアクセスできなくなってしまいます^^;
済みません 当方が勘違いしていただけでした
日本語で正しかったんですね
普通に日本語で作ったものをurlencode()関数でエンコードしても、
アクセスできるという話でした