« 今見ているページにGoogle Mapsを追加するBookmarklet | Main | SanDisk CruzerMicro 4GB »

PEAR::Services_Lingrで日本語を扱うときの注意

Cometを使ったホントの非同期ブラウザチャットのLingr、使ってみるとかなりCool。ブラウザベースだからソフトをインストールする必要もないし、軽くチャットするだけならアカウントを取る必要すらない。まさにインスタントなメッセンジャー。でもってこのLingr、APIまで公開してあり、様々なサービスに展開する可能性を秘めている。実にCool。Lingrの仕組みについては江島健太郎氏のこのエントリを読んでいただくとして、APIを使って何かしたい人には、既に様々なライブラリDeveloper Wiki上で公開されている。いやあ、実に2.0、2.0。

でもって、ライブラリの一つ、Lingr APIをPHPで簡単にいじくることのできるパッケージのPEAR::Services_Lingrを使ってみたんだけど、Room.observeメソッドとかでメッセージを取り出すときに日本語のメッセージがうまく取れない。調べてみたら、Lingr APIが返してくるXML中の日本語が数値文字参照で、そのままだとXML_Unserializerが読んでくれないことがわかった。ので、Services_Lingrパッケージの中のLingr.phpの中でXML_UnserializerにXMLを投げるところの前(94行目あたり)に下記のようなコードを挿入して問題解決。

...
$result = $http->getResponseBody();
$map = array(0x0080, 0xffff, 0, 0xffff);
$result = mb_decode_numericentity($result, $map, "UTF-8" );

$xml =& new XML_Unserializer();
...


UTF-8じゃなくてEUC-JPにするときは、$map=array(0, 0x10FFFF, 0, 0xFFFFFF); とすればよい。これでXML_Unserializerで処理して返ってきた配列がちゃんと日本語で返ってくる。mb_decode_numericentityの使い方については、ここここを参考にした。有難うございます。
ひょっとしたら最新版のXML_Unserializer使えば問題なく動くのかもしれないけど、一応メモ代わりに。…って、Lingr APIをPHPで使いたい人、しかもXML_Unserializerdが何かちゃんと日本語処理してくれない人、ってえらい限定された人向けのエントリだな。

Powered by ScribeFire.

|

« 今見ているページにGoogle Mapsを追加するBookmarklet | Main | SanDisk CruzerMicro 4GB »

「WEBサービス」カテゴリの記事

「インターネット」カテゴリの記事

Comments

ありがとうございます!実は教えて!gooに以下のような質問を投げたのですが返事をもらえず、困っていたところでした。
http://oshiete1.goo.ne.jp/qa3127478.html
おかげさまで日本語を表示する事ができました。どうお礼を申し上げてよいか分かりません。TEDDY-G様をRSSリーダに登録していて、本当によかったです。感謝です。

Posted by: mine-D | 2007.07.05 at 09:21 PM

>mine-D様
おお、お役に立てて何よりです。あたかもすぐ解決したように書いてますが、原因はすぐ特定できたものの、数値文字参照をマルチバイト文字に直すところで暫く悩みました。マルチバイト文字と文字コードの周りは常に悩みが生じますね。
Lingr APIで面白いものを作られたら、是非教えてください。

Posted by: TEDDY-G | 2007.07.05 at 11:32 PM

There are all kinds tiny tower hack of games which are dedicated to provide. Has totally changed the meaning of which can deliver the analysis which was the entertainment zone.

Posted by: tiny tower cheats | 2014.12.17 at 08:14 AM

There are many instances that incriminating evidence is hungry shark evolution cheats obtained by completing each level, and he loves performing is taking part in these fields. Before you start hungry shark evolution cheats using them and simply run through. Free mobile games to your device free of cost. You need to tilt the device by means of memory card or bluetooth, memory cards or through Original Equipment Manufacturer. A third of the person's pocket and people slept outside as long as you move your character, funny ring tones on their cell phone whenever they wish.

Posted by: hungry shark evolution cheats android no root | 2014.12.17 at 07:24 PM

The Micromax G4 Gamolution has associated with the touch auto-aim can be considered as the candy crush saga cheats fire controllers and turbo mods. Online shopping stores have different features with real sound effects and exclusive shots are the United Kingdom, in a handy tool. Games also come up with latest and exciting game of your new iPad games that involve an element of gaming along with help section.

Posted by: candy crush saga energy hack | 2014.12.18 at 10:22 AM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/20589/15667717

Listed below are links to weblogs that reference PEAR::Services_Lingrで日本語を扱うときの注意:

« 今見ているページにGoogle Mapsを追加するBookmarklet | Main | SanDisk CruzerMicro 4GB »