- PR -

URLに日本語を含む場合のエンコーディングについて

1
投稿者投稿内容
未紀人
会議室デビュー日: 2008/04/26
投稿数: 2
投稿日時: 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 ]
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-04-26 16:20
引用:

未紀人さんの書き込み (2008-04-26 15:08) より:
というのは、form でクエリ文字列を送信する場合 ?a=%xx%xx%xx&b=%xx&c=%xx という文字列
がつきますが、これはページのエンコーディングが使用されていると思います。

これを form の onSubmitイベントを捕捉して、actionの書換えを行い
/%xx%xx%xx%xx/%xx/%xx/


規格の厳密なことは良くは知らないのですが、form の action に書くのは path と呼ばれる文字列(上記のようにスラッシュで区切って書く部分)だと思いますが、ここには日本語かどうかやエンコーディングがどうかという概念は持たないのではないでしょうか。
ですので、

引用:

未紀人さんの書き込み (2008-04-26 15:08) より:
受ける側が考慮していれば、なんでもいいのでしょうか?



だと思います。

(ちなみに、search と呼ばれる文字列(? 以降に書く文字列)はそうではなく、エンコーディングを気にしないといけない部分ですが、それは action には書けないと思ったほうが良いと思いますが、この辺の問題は action に何が書けるかという問題にも絡みます。このあたりはあまり良く分りません。)

以下、追記。

PHP については言及せず、Web アプリケーション一般の話だけ書きました。

[ メッセージ編集済み 編集者: unibon 編集日時 2008-04-26 16:22 ]
未紀人
会議室デビュー日: 2008/04/26
投稿数: 2
投稿日時: 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)にあわせることにしました。

ありがとうございました。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-04-27 00:14
引用:

未紀人さんの書き込み (2008-04-26 16:43) より:
引用:
--------------------------------------------------------------------------------
規格の厳密なことは良くは知らないのですが、form の action に書くのは path と呼ばれる文字列(上記のようにスラッシュで区切って書く部分)だと思いますが、ここには日本語かどうかやエンコーディングがどうかという概念は持たないのではないでしょうか。
ですので、
--------------------------------------------------------------------------------
今回の場合は、pathの部分を QUERY_STRINGで取得して / で分解して処理する仕組みを
作っているので、エンコーディングの概念が存在します。
で、いろいろなエンコーディングで来たら嫌だなぁと思ったで質問してみました。


私の理解では、path の部分にはエンコーディングの概念がないので、サイトが自前でエンコーディングの概念を持つのは構いませんが、共通の「ルール」としては決まっていないのではないか、ということを書きました。

引用:

未紀人さんの書き込み (2008-04-26 16:43) より:
引用:
--------------------------------------------------------------------------------
>未紀人さんの書き込み (2008-04-26 15:08) より:
>受ける側が考慮していれば、なんでもいいのでしょうか?

だと思います。
--------------------------------------------------------------------------------

フォーム以外にもエンコードしたURLリンクなども使用するため、SEOなどを考えた
場合、ページのエンコーディングに合わせたほうが有利そうですね。


これも SEO が path の部分に勝手にエンコーディングの概念を持ったり、勝手じゃなくても世間で多く使われていると推測するやりかたでエンコーディングを仮定して処理したりする、ということを仮定してサイト構築するのならば、そういうやりかたもおっしゃるように有利だとは思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-28 17:07
引用:

未紀人さんの書き込み (2008-04-26 16:43) より:

フォーム以外にもエンコードしたURLリンクなども使用するため、SEOなどを考えた
場合、ページのエンコーディングに合わせたほうが有利そうですね。


"URL リンク" というのが何であるのかよくわかりませんが、アンカーテキスト自体が URL だと仮定すると何もエンコードしない方が効果があるでしょう。 SEO だけを考えるならアンカーは普通のテキストが望ましいです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)