« twitter を使ってやろうじゃないの、という気分になってきた | トップページ | くもりがちな梅雨の走りの休日には熱いコーヒーを »

2010.06.09

Net::Twitter::Lite で OAuth しようとしたら文字化けして困った→解決

またもや技術的メモ。

JapanLocal.infoは毎時自動的に全国都道府県の新着情報をフィードを中心にして収集している。その中から適当に1個を tweetしているのだが、それにはNet::Twitter::Lite を使っている。

いっぽう、twitterの認証方式が変更されるということで OAuth を tweetの認証にしなければならない。ということで次のページを参考に作り変えてみた。

「Perl製Twitter BotにOAuth認証で投稿させる/楽」
http://tech.bayashi.jp/archives/entry/perl/2010/003016.html

で、トークンだとかなんだとか必要なものを dev.twitter.com でいただいてやってみたのだが、tweetに文字化けが発生する。で、あれこれいじってみて何とか解決した。ポイントは次のとおり。

・ use utf8 して ソースコードを UTF-8 で書くと、コード中のリテラルとしての文字は UTF-8フラグ付きになる。
・ ところで、DBなんかから読み込んだ文字列ではフラグ無しだったりする。
・ フラグ無しの文字列にリテラルを連結して update() すると、フラグ無しの部分が見事に文字化けする。
・ なので、utf8::decode() なんぞでフラグ付きにしてやるといい。

以上。サクッと書いてしまったが、ここまで長かった。年寄りにはきついわ。

これに絡んで Wide character in print at... のような warning が出たけど、これは binmode STDOUT,":utf8"; で解消。他にも use encoding 'utf-8'; なんてのがあるみたいだが、twitterに投げると Incorrect signature が出るので使わなかった。

ほんと、文字コードの取り回しは面倒だわ。

改修中、文字化け tweetとか非公開状態とかでご迷惑をおかけしました。おわびします。

【参考】
「Perl 5.8.x Unicode関連」
http://www.rwds.net/kuroita/program/Perl_unicode.html
:このページは Perlでの UTF-8周りについて丁寧に説明してあるので参考になった。

« twitter を使ってやろうじゃないの、という気分になってきた | トップページ | くもりがちな梅雨の走りの休日には熱いコーヒーを »

ウェブページ

フォト

hide module-header

redirect to tafworks.com

GglAnlytcs