画像はGoogle検索です。
オレンジ色の下線部分を見てください。URL欄なのに「東京都」となっています。これはURLdecodeされている「%E6%9D%B1%E4%BA%AC%E9%83%BD」が自動的に変換されているのだと思います。
私のサイトでも実践してみたのですが、Googleにインデックスされた際に変換されずに「%E6%9D%B1%E4%BA%AC%E9%83%BD」のままです。これは何故でしょうか?
もしかすると私のサイトでは「%E6%9D%B1%E4%BA%AC%E9%83%BD.html」となっているからでしょうか?
どなたかよろしくお願いします。
URLを気軽にいじれないので、あまり実験が出来ません。正確な情報を頂けるとありがたいです。
わたしのは、CGIの変数値なので自動ではエンコードされないだけのようです。
一応、参考までに、わたしのサイトでやった結果です。
Googleで以下のキーワードで検索すると、9,10番目のリンクで日本語URIが表示されてます。
site:db.x0.com/bk
ただし、今はこのやり方はしていないので、しばらくしたら、日本語URI部分は消えます。
確かに日本語URIで表示されていますね。
makoohiraさんから頂いた回答で以下の部分がよくわからないのですが、もしよろしければ噛み砕いて教えていただけないでしょうか。
「予めUTF-8にエンコードしたURLを送ってみたところ、逆に、Google検索結果にはUTF-8にエンコードしたURLが記録されました」
1.「エンコードしたURLを送る」とはどのような事なのでしょうか?
2.2つ目の「エンコード」は「デコード」の間違いでしょうか?
サイトのソースを拝見するとShift-JISなのでそれは問題ないのですね。なぜ私のサイトがダメなのでしょう。minkpaさんの言うとおり拡張子が付いているからでしょうか?
もしお時間があれば教えて頂けると大変助かります。
かれこれ2週間近く悩んでおります。
東京都 → %E6%9D%B1%E4%BA%AC%E9%83%BD
utf-8エンコードした文字列
%E6%9D%B1%E4%BA%AC%E9%83%BD → 東京都
utf-8エンコードした文字列のデコード
つまりperlプログラム内で、リンクを出力するときに、
http://..../read.cgi?sub=東京都
を
http://..../read.cgi?sub=%E6%9D%B1%E4%BA%AC%E9%83%BD
に書き換えさせるようにした、ということです。
perlのエンコード構文(一個目の構文)
http://tech.bayashi.net/pdmemo/encodedecode.html
ただ、掲示板のmethod=postなんか同様、CGIはどんな形式の文字でも、
書いたまま渡してしまうようなので、今回の事例とは違うようです。
2.
「エンコード」は「コード化する」
「デコード」は「コードから人間の読める状態などに戻す」ことを意味します。
つまり、
utf-8エンコードしない場合は、
http://..../read.cgi?sub=東京都
予めutf-8エンコードした場合、
http://..../read.cgi?sub=%E6%9D%B1%E4%BA%AC%E9%83%BD
という形で記録されたということです。
先日、貼られていたリンクを見る限り、Amazonはbotに対してのみ、utf-8と偽装しているようですし、Wikiは元々utf-8のページです。
Google botの性能があまりよくなければ、アンカーに「charset=utf-8」を入れれば誤認識してくれるかもしれませんが、それで済むなら、Amazonが手の込んだことをするかは疑問です。(ブラウザではmetaの宣言通りにshift-jisで表示)
utf-8で書き直すというのが可能性高いかもしれません。