LWP::Simple を使用して、REST サービスへの GET 要求を作成しようとしています。簡単なコードは次のとおりです。
use LWP::Simple;
$uri = "http://api.stackoverflow.com/0.8/questions/tagged/php";
$jsonresponse= get $uri;
print $jsonresponse;
私のローカル マシンでは、Ubuntu 10.4 と Perl バージョン 5.10.1 を実行しています。
farhan@farhan-lnx:~$ perl --version
これは、x86_64-linux-gnu-thread-multi 用にビルドされた v5.10.1 (*) perl です。
正しい応答を取得して、画面に出力できます。例えば:
farhan@farhan-lnx:~$ head -10 output.txt
{
"合計": 1000,
"ページ": 1, "ページサイズ
": 30,
"質問": [
{
"タグ": [
"php",
"配列"、
"コーディングスタイル"
(...省略...)
しかし、SSH 接続先のホストのマシンでは、まったく同じコードのガベージが画面に出力されます。エンコーディングと関係があると思いますが、REST サービスは応答で文字セット タイプを返さないので、LWP::Simple に正しいエンコーディングを強制的に使用させるにはどうすればよいでしょうか? ここで何が起こっているのでしょうか?
ホストのマシン上の Perl のバージョンは次のとおりです。
[drdd]$ perl --version
これは、x86_64-linux-gnu-thread-multi 用にビルドされた v5.8.8 の perl です。