「amazon.de の前身のこと」で、以前はユニコードが使えなかったから、amazon.de (ドイツのアマゾン)の前身のオンライン書店サイトを日本語対応させる話が頓挫したことを書いたけれども、今現在 amazon.de が送ってくるバナーも相変わらず ISO-8859-1 一本なのだった。だから UTF-8 を使っているこのブログに組み込むと文字化けしてしまう。amazon.de へのリンクは、これまで個別商品にしか張ってこなかった。今回、"Slowenien" という単語で検索して向こうが送ってくるものを表示するバナーを入れてみて、初めて問題に気づいた。ウムラウトなどがあると文字化けしてしまうのだ。ABC-Bücher だったときからたいして進歩してないじゃん。
あちらに、ユニコードは選べないの? と尋ねると、それはできないという木で鼻をくくったようなお返事。なんともがっかり。何も Shift-JIS だの GB2312 だのに対応しろと言っているわけではない。ユニコードぐらい対応してもいいんじゃないの? UTF-8 でブログやっている人だって多いと思うんだけれど。(日本のアマゾンが送ってくるデータはそのまま問題なく表示できる。)で、向こうから送ってくるデータをこっちで UTF-8 にコンバートしてからページに組み込めないか模索する。
なにせ素人だから、試行錯誤の連続。
コンバートは php で mb_convert_encoding あたりの関数を使えばいいことは分かっている。あっちの送り出すデータをどうやって取得するかでまずつまづく。file_get_contents を使ってみたら、このレンタルサーバ、URL file access はできない設定になっているというエラーが出た。
php.ini の設定を .htaccess で変更してやればいいのかとも思ったけれど、最近の php ではこの設定はINI_ALL(スクリプト、ディレクトリ設定ファイル、サーバ設定ファイルのどれからも変更可能)からINI_SYSTEM(サーバ設定ファイルからのみ設定変更が可能)に変更されているという情報も目に留まった。じゃあレンタルサーバではダメか。(試すだけ試せばいいのだけれど、やってみていない。)
しかし待てよ、以前、MagpieRSS という php モジュールを使って、他のサイトの RSS が引っ張って来れていたけれど、あれはどうなっていたんだろうと思ったら、php で ウェブブラウザを模す Snoopy というクラスを使っていたのだった。2日ほどいじって、なんとか解決した。Snoopyを使って amazon.de のリンク先を取ってきて、それに mb_convert_encoding をかける。それをもともとのリンクの iframe の中で読み込むということで(たぶん)解決した。
こういうのに慣れている人ならどうってことない作業なんだろうけれど、僕は「日曜プログラマ」どころか「半年に一度プログラマ(の真似事)」だから苦労した。(半年に1度独文学者だったり、1年に一度ヴァイオリニストだったり5年に一度英文学者だったり…やれやれ。)
半年前ぐらいに php の入門書を2、3冊ざっと読んだけれど、その後手を触れていなくて、基本的なコードの書き方すら忘れていた。それらの本は、日本に置いてきてしまって、いま手元には日本語の参考書はない。もちろんネットを漁ればいろいろな資料があるけれど、こういうときは、一連のまとまった記述のある書物のほうがありがたいと思った。



コメントする