>>135
0x80より大きい値とmb_flagが1のときだけエスケープされるはずです。
1.5.7.1以前のバージョンではmb_flagが無くて、0x80より大きい値という条件しかなかったので、
マルチバイト文字の2バイト目が「{」や「\」などの場合におかしくなってました。

mb_flagをマルチバイト文字の1バイト目で1にすれば、
次のバイトが0x80以下でもエスケープされるという仕組みのはずですが、
mb_flagの設定方法がまずくて、2バイト目でクリアされなくて
さらに次のバイトまでエスケープされる場合がある、という状況です。

ttp://bugzilla.gnome.org/show_bug.cgi?id=437346
で、T.Matsuyama氏が提示したコードが正しく動くはずです。

#そこまで分かってるな自分でやれ、と言われそうだ……
すいません、環境作りが荷が重いですorz