読者です 読者をやめる 読者になる 読者になる

tumblr

tumblr(タンブラー)は、メディアミックスブログサービス。ブログとミニブログ、そしてソーシャルブックマークを統合したマイクロブログサービスである。アメリカのDavidville.inc(現: Tumblr, Inc.)により2007年3月1日にサービスが開始された。

cronでスクレイピングさせると日本語が消える問題

問題

phpで作ったサイトをスクレイピングするシェルスクリプトをcronで動かすと、日本語部分が見事に無視される。

解決

スクレイピング自体はphantomjsでやらせていたので、こいつが悪さしてるかと思ったけど、そうではなくて、cron実行時の環境変数がおかしいことが原因みたい。

具体的には、実行スクリプト中で以下のように環境変数を設定する

export LANG="ja_JP.UTF-8"

HTTPリクエストヘッダ内のaccept-languageが日本語に設定されて、これで上手く行った。


が、一つ疑問なのはログインシェルでecho $LANGとすると"ja_JP.UTF-8"と返ってくるのはいいんだけど、cronで実行させた時にはecho $LANGしても何も設定されていないこと。
以下のスクリプトをcronで実行してみた。

#!/bin/bash

echo $LANG > test.dat

上記のようにsourceコマンドなどで実行するとtest.datには"ja_JP.UTF-8"と書かれているが、cron実行したときはtest.datには何も書かれていない。
/etc/sysconfig/i18n はja_JP.UTF-8で設定してあるんだけど、この設定ファイルの値が反映されるわけじゃないんだろうか。

参考:
http://blog.livedoor.jp/ankodasi/archives/1594316.html