文字コードShift-JISのMovable Typeでも、「つぶやく」ボタンをつける

久々に本格的なTipsネタ。
今回もマイナな悩みを解決するものですが、やりたかったのは、こんなことです。


1.よくある「このエントリをtwitterでつぶやく」ボタンをつけたい
2.けど、Movable Typeだから、エントリ名を自動的に挿入できるようにしておきたい
3.やだ、誰よ、Movable Type文字コードをShift-JISにしたの?
4.Movable Type文字コードは、Shift-JISだけど、UTF-8twitterに日本語を渡したいの


という流れ。


弊社でもようやくtwitterアカウントを持ち、販促/マーケティングに活かしていこうということになり、以前から運営していたブログ(Movable Type)によくある「このエントリをtwitterでつぶやく」ボタンを設置しようとしたのが、経緯です。
「follow me」ボタンは、簡単に設置できたのですが、「つぶやく」ボタンは、問題にブチあたりました。


URLのエンコードがうまくtwitterに渡せない!ということです。


弊社になぜか「文字コードは、全部Shift-JISいいんだよー」って輩がいるので、Movable TypeをShift-JISで作ってしまっていたんですね。
(根拠はない。年寄りだから違う文字コードに触れようという気がないみたい)
で、使っているMovable Typeは、一度作ってしまうと文字コードの変更が容易でないと……。


それでこんな方法で解決しました。


1.「Publickey」さんの「つぶやく」ボタンを利用する
2.「楽:技林ブログ」さんのMovable Typeプラグインを利用する


の2つです。
他力本願なので、あんまりTipsとも言えないかもしれません。


もともと「Publickey」さんの「つぶやく」ボタンを利用したのは、自分で調査/制作している時間がなかったからです。


ブログにTwitterボタンを付ける方法:Publickey


Movable Type用の「つぶやく」ボタン設置方法を考案されていました。
で、ここにある「encode_url="1"」部分が、ブログの「エントリ名」までをtwitterに渡すのに必要だったわけです。


見る人が見ればわかりますが、Movable TypeがURLエンコードを行うための記述です。
エントリ名に絶対英語(1バイト文字)しか使わない、というブログであれば、いいんでしょうが、大抵「日本語」のタイトルを付けるものです。
Publickeyさんは、これがうまくtwitter側に伝わって、


「ブログのエントリ名+エントリURL」


でつぶやいてもらえるように作られていたわけです。


が、ここで弊社の文字コードの問題が絡んできます。
いくら「Shift-JIS」で日本語をエンコードしても、「utf-8」のtwitterは、「は? 何いってんの?」状態だったわけです。


そこで楽:技林ブログさんの作成された「utf-8エンコードしてくれる」プラグインを利用するに至ったわけです。


Movable Typeのutf8_encode_urlプラグイン/楽


インストールも非常に簡単で、Movable Typeの管理画面で設定する必要すらありませんでした。


「encode_url="1"」と書いていたMovable Type用テンプレートHTMLを「utf8_encode_url="1"」に書き直しただけです。


ようやく一件落着。
twitter側につなげたいけど、つなげてないMovable Typeユーザなんて、どれほどいるかわかりませんが、これでいかがでしょうか?