人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

日本語サイトのタイトルを、ブックマークレット経由で文字化けを起こさず取得する方法について悩んでいます。

構成するシステムの処理の流れとしては次のような感じです。

1.JavaScript によるブックマークレットでタイトル文字列を自動取得
2.PHPによる情報の受け取り(フレームワークとしては CakePHP を使用)
3.MySQLによるデータの保管と呼び出し

ソーシャルブックマークと類似の仕組みと考えてもらえれば問題無いと思います。

一般的な対処法、ケーススタディ、または文字化け対策された標準化されたライブラリやその使い方などのノウハウがあれば、ぜひこの人力検索を通じて共有していただければと思います。また、今回はブログエントリの回答に対してコメントをお寄せいただく方にポイントを付与するという実験も兼ねておりますので、問題に解答することよりもポイントを取得することを目的とされている方の回答はご遠慮願います。

親ブログエントリ:多様な文字コードの対象を Bookmarklet で取得するシナリオ ( ラボブログ )
http://blog.spicebox.jp/labs/2009/02/_bookmarklet.html

●質問者: ryuzi_kambe
●カテゴリ:コンピュータ インターネット
✍キーワード:Bookmarklet CakePHP JavaScript MySQL PHP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tsukasa57
●60ポイント

ブックマークレットから文字コードを送信すれば Web のタイトルを文字化けせずに取得することが出来ると考えます。コード例を提示します。

if(navigator.appName=="Microsoft Internet Explorer"){
 alert(document.title + "," + document.charset);
}else if(navigator.appName=="Netscape"){
 alert(document.title + "," + document.characterSet);
}

このコードは、ブラウザで表示しているサイトのタイトルと、そのサイトを表示しているときに使用した文字コードをアラートボックスに表示します。このコードをブックマークレットとして登録し、IE6 で実行した例は http://f.hatena.ne.jp/tsukasa57/20090216195024 になります。


ここでは、Google のトップページを使いましたが、Google の文字コードは UTF-8 であり、文字コードも表示できています。もし、同じページを SHIFT-JIS で表示させた状態でブックマークレットを使用すると http://f.hatena.ne.jp/tsukasa57/20090216195025 のようになります。この例では、アラートボックスは SHIFT-JIS になっています。


つまり、ユーザがブックマークレットを実行したときの文字コードがタイトルと同時に取得できます。サーバー側で送られてきた文字コードを見れば、サイトのタイトルもわかると思います。要するに文字化けの対応をユーザ側に任せていることになるわけで、一般的にはそれでも良いんじゃないかなと思います。


※本解答は「日本語サイトのタイトルを、ブックマークレット経由で文字化けを起こさず取得する方法」だけを述べています。説明の都合上、話を簡単にするためにコード例はアラートボックスを表示するだけにとどめています。「ソーシャルブックマークと類似の仕組み」を実装する場合は、当然アラートボックスの部分を変更する必要があります。


※上記例では Internet Explorer と Mozila Firefox にしか対応していません。他のブラウザにも対応させる場合は、例えば http://d.hatena.ne.jp/tnishimu/20070405/1175766277 で紹介されているようなコード(Opera)を追加する必要があります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ