スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-- : -- : -- | スポンサー広告 pagetop

はてブのURLエンコード問題。

はてブにここを登録しようとするとうまくいかなかったんですよ。

何が問題かというと、登録しようとしたURL

http://volga.eng.toyama-u.ac.jp/~mii/lab/manual/fujitsu/C++/index.html

よく見てみると、"++"なんていう文字列が入っている。

これは、はてブの追加ブックマークレット(JavaScript)内で、URL中の"+"が「URLエンコードされた半角スペース」として解釈される。(escape()をかけても%2Bに変換されない)
追加確認画面で一度半角スペースにデコードされた後、今度は"%20"にエンコードして登録される。

結果、

http://volga.eng.toyama-u.ac.jp/~mii/lab/manual/fujitsu/C%20%20/index.html

が登録される。

こんなURLは存在しないので404。


これを解決するには、URL中の"++"を手動で"%2B%2B"に変えてやればいい

http://volga.eng.toyama-u.ac.jp/~mii/lab/manual/fujitsu/C%2B%2B/index.html

ここにアクセスするとApacheはちゃんと"C++"っていうディレクトリを参照してくれるし、はてブにもこのまま登録される。


今回の問題の原因の考察。
  • "+"っていう記号を含むディレクトリ
  • JavaScriptのescape()関数が"+"をエンコードしないという仕様
  • ApacheがエンコードされていないURLもサポートしていること(おせっかい)
これらの相性が悪かったってことで。

根本的にはURLエンコードが二種類の符号化を許容しているのがマズイ。


ちなみにdel.icio.usのブックマークレットはescape()じゃなくてencodeURIComponent()を使っていて、こっちだとちゃんとそのまま("++"のまま)登録できる。


検索時にGoogleが気を利かせてURLエンコードしたURLを返してくれればと思わんでもないが、URL内の"C++"が"C%20%20"を指すのか"C%2B%2B"を指すのかわからん現状じゃ難しいかな。

スポンサーサイト

テーマ:Webサービス - ジャンル:コンピュータ

18 : 12 : 18 | misc. | トラックバック(0) | コメント(0) pagetop
<<blood alone? | ホーム | 未来世紀>>
コメント

コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://arith.blog70.fc2.com/tb.php/8-9499c67f
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |

カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

プロフィール

しむかっぷ

Author:しむかっぷ
狐の抜け殻

最近の記事

最近のコメント

最新トラックバック

月別アーカイブ

 全記事の一覧

カテゴリー

リンク

リンクフリー&アンリンクフリー

ブログ内検索

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。