- - PR -
URLに日本語を含む場合のエンコーディングについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-26 15:08
はじめまして
どの会議室に書いたらいいのかわからなかったのでここに書いてみました。 PHPであるサイトを構築しているのですが、URLに日本語を含む場合 urlencode()で 日本語を %xx%xx%xx%xx のような形式にエンコーディングしますが、その際の元の エンコーディングとURLには何かルールはあるのでしょうか? というのは、form でクエリ文字列を送信する場合 ?a=%xx%xx%xx&b=%xx&c=%xx という文字列 がつきますが、これはページのエンコーディングが使用されていると思います。 これを form の onSubmitイベントを捕捉して、actionの書換えを行い /%xx%xx%xx%xx/%xx/%xx/ JavaScriptの encodeURIを使用するとエンコーディングが UTF-8が使われているようなの ですが、これは問題ないのでしょうか? ページおよびシステムが EUC-JPで稼動している場合はそのURLもEUC-JPでエンコーディング されるようにしなければならないのでしょうか? 受ける側が考慮していれば、なんでもいいのでしょうか? フォームだけでなく アンカータグでのリンクも貼るので、エンコーディングはページの 属性に合わせるのが正しいと思うのですが、なにかルールなどあるのでしょうか? [ メッセージ編集済み 編集者: 未紀人 編集日時 2008-04-26 15:09 ] | ||||||||
|
投稿日時: 2008-04-26 16:20
規格の厳密なことは良くは知らないのですが、form の action に書くのは path と呼ばれる文字列(上記のようにスラッシュで区切って書く部分)だと思いますが、ここには日本語かどうかやエンコーディングがどうかという概念は持たないのではないでしょうか。 ですので、
だと思います。 (ちなみに、search と呼ばれる文字列(? 以降に書く文字列)はそうではなく、エンコーディングを気にしないといけない部分ですが、それは action には書けないと思ったほうが良いと思いますが、この辺の問題は action に何が書けるかという問題にも絡みます。このあたりはあまり良く分りません。) 以下、追記。 PHP については言及せず、Web アプリケーション一般の話だけ書きました。 [ メッセージ編集済み 編集者: unibon 編集日時 2008-04-26 16:22 ] | ||||||||
|
投稿日時: 2008-04-26 16:43
unibon様
回答ありがとうございます。 引用: -------------------------------------------------------------------------------- 規格の厳密なことは良くは知らないのですが、form の action に書くのは path と呼ばれる文字列(上記のようにスラッシュで区切って書く部分)だと思いますが、ここには日本語かどうかやエンコーディングがどうかという概念は持たないのではないでしょうか。 ですので、 -------------------------------------------------------------------------------- 今回の場合は、pathの部分を QUERY_STRINGで取得して / で分解して処理する仕組みを 作っているので、エンコーディングの概念が存在します。 で、いろいろなエンコーディングで来たら嫌だなぁと思ったで質問してみました。 引用: -------------------------------------------------------------------------------- >未紀人さんの書き込み (2008-04-26 15:08) より: >受ける側が考慮していれば、なんでもいいのでしょうか? だと思います。 -------------------------------------------------------------------------------- フォーム以外にもエンコードしたURLリンクなども使用するため、SEOなどを考えた 場合、ページのエンコーディングに合わせたほうが有利そうですね。 しらべていたら encodeURIの EUC対応版を見つけたので、必ずしもUTF-8にしなければ ならない理由もなさそうですし... そろそろ、UTF-8でサイトを構築したほうがいいのでしょうか? UTF-8だとLinuxのコンソールが使いにくくなってしまうのでEUCを使ってます。 Shift_JISはPHPやSmartyテンプレートエンジンとの相性が悪いようなので、 はじめから除外しています。 ということでページのエンコーディング(EUC)にあわせることにしました。 ありがとうございました。 | ||||||||
|
投稿日時: 2008-04-27 00:14
私の理解では、path の部分にはエンコーディングの概念がないので、サイトが自前でエンコーディングの概念を持つのは構いませんが、共通の「ルール」としては決まっていないのではないか、ということを書きました。
これも SEO が path の部分に勝手にエンコーディングの概念を持ったり、勝手じゃなくても世間で多く使われていると推測するやりかたでエンコーディングを仮定して処理したりする、ということを仮定してサイト構築するのならば、そういうやりかたもおっしゃるように有利だとは思います。 | ||||||||
|
投稿日時: 2008-04-28 17:07
"URL リンク" というのが何であるのかよくわかりませんが、アンカーテキスト自体が URL だと仮定すると何もエンコードしない方が効果があるでしょう。 SEO だけを考えるならアンカーは普通のテキストが望ましいです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1