このブログだけをご覧の方には何のことやらわからないと思うが、ここに記事を投稿するとmixiの自分の日記に自動的にそのヘッドラインが投稿されるような仕組みになっている。
それには
ここで公開しているpost_blog_to_mixi.plというperlのプログラムを、さらに複数ブログの投稿に対応できるよう改造したものを使っている。(この複数ブログ版には手抜きがあるので公開はしていない)
なお、このプログラムの使用には多少の知識が必要だし、サポートもしていないので、使うことを積極的にお勧めすることはしていない。
もう2年くらい何の問題もなく動いていたのだが、先日から突然自動投稿されたmixi側の記事が文字化けするようになってしまった。
調べてみるとpost_blog_to_mixi.plをクーロンで動かしているさくらインターネットのOSとperlのバージョンアップが関係していることがわかった。
いろいろやってみたところPerlプログラム中の
my $body = $itemBody . "\n" . $message . "\n" . $item->link . "\n";
を
my $body = $itemBody . "\n" . $message . "\n" . Jcode->new($item->link)->euc . "\n";
に変えることで直った。
$item->linkにはリンク先のURLがASCIIコードで、$itemBodyと$messageにはeucコードで文字列が入っている。この文字列をWWW:Mixiというモジュールに渡すことで、Mixiに投稿される。
本来は$item->linkの漢字変換は不要なはずだし、これをログに出してみてもJcodeを通す前と後で違いが見つからない。
それに、WWW:Mixiに渡す前の文字列は修正前のものでも特に化けているわけではないし、違いはなかった。同じ文字列なのに片方は渡した先で文字化けが起こるのだ。と、なると外に見えている文字列ではなくて、Perl内部で何かが起こっているのだろうか。
うーん。不思議だ。
とりあえず直ったからいいとしよう。