HabariでUTF-8以外の文字コードを使用しているブログからPingbackを受け取る
Habari
はデフォルトで文字コードがUTF-8に設定されているので問題なくUTF-8なBlogからのPingbackを受信することが出来ます。しかし、古いバージョンのWordPress ME等は文字コードにEUC-JPを使用しているため、これらのブログからのPingback文字化けしてしまいます。
そこでPingback受信時に送信元ブログの文字コードを取得してUTF-8以外であれば文字コードを変換するパッチを書いてみました。
パッチを適用するには下記のパッチをダウンロード後、Habariのルートディレクトリでpatch -p0 pingback.plugin.php.r1747.mbconv.diff してください。
HabariProjectにもこのパッチを送ってあるのですが、現在はVer 0.5にむけてリポジトリがFeature Freezeにはいっているためすぐにcommitしてもらうのは難しそうです。
pingback.plugin.php.r1747.mbconv.diff
--- system/plugins/pingback/pingback.plugin.php.orig 2008-05-23 05:49:42.000000000 +0900
+++ system/plugins/pingback/pingback.plugin.php 2008-05-23 06:15:36.000000000 +0900
@@ -150,6 +150,16 @@
}
$source_contents= $rr->get_response_body();
+ // for Multi-byte
+ if ( function_exists ( 'mb_convert_encoding' ) ) {
+ // TODO: $habari_encoding= Options::get('encoding');
+ $habari_encoding= 'UTF-8';
+
+ if ( preg_match( "/]+charset=([A-Za-z0-9\-\_]+)/i", $source_contents, $matches ) !== false && strtolower( $habari_encoding ) != strtolower( $matches[1] ) ) {
+ $source_contents= mb_convert_encoding( $source_contents, $habari_encoding, $matches[1] );
+ }
+ }
+
// Find the page's title
preg_match( '/(.*)<\/title>/is', $source_contents, $matches );
$source_title= $matches[1];












