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」のようなものを生成する必要があるのです。
この現象の原因・解決法を教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/08/27 01:24:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:AnonymousCoward No.1

回答回数35ベストアンサー獲得回数3

ポイント80pt

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

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

mkdir '[てすと]'

でディレクトリを作成。

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

id:ty2016

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

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

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

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

2011/08/27 01:24:08

その他の回答1件)

id:AnonymousCoward No.1

回答回数35ベストアンサー獲得回数3ここでベストアンサー

ポイント80pt

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

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

mkdir '[てすと]'

でディレクトリを作成。

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

id:ty2016

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

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

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

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

2011/08/27 01:24:08
id:Jupiter2100 No.2

回答回数444ベストアンサー獲得回数74

ポイント20pt

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


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

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

>サーバーの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では私もアクセスできなくなってしまいます^^;

2011/08/27 00:58:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません