« 今更、踊る大捜査線にはまる(p) | メイン(m) | カエルコーナー »(n)

Trackbackの文字コード指定方法最終(予定)

先日の座談会でちらっとTrackbackの文字コードの指定方法について話が出ました。
その時、送るときはUTF-8で統一しませんか?という案が出ました。参加したメンバーが軒並みすごい方々だったので、この案を実装しても文句出ないかなと思い、早速実装した日本語化パッチをアップしました。
早速といいながら、座談会から既に1週間経ってしまいましたが。

ということで、Movable TypeのTrackbackはUTF-8で送るのを最終案としたいところ。賛同が得られたらウレシイです。

ソース読めばわかんだろと思って書かなかったけど、仕様はこんな感じ。

◆送信時
・文字コードはUTF-8で送信
・Content Bodyに「charset=utf-8」を付与

◆受信時
・charsetパラメータがあればそれを信用
・charsetパラメータが無ければタイトル等から文字コードを推測

ということで、送信時にUTF-8にするようになっただけで、他のコードで送られても問題ないし、送られる側のサイトで文字コード判別の助けになるようにcharsetパラメータも送ってるし、いろいろと考えています。
RubyでUTF-8の扱いが面倒とか言われちゃうと、すみませんとしか言いようがないですが。


内容はこちら。

    lib/MT/App/Trackback.pm
  1. 120行目以降を書き換え
    my($title, $excerpt, $url, $blog_name) = map scalar $q->param($_),
                                  qw( title excerpt url blog_name);

    no_utf8($tb_id, $title, $excerpt, $url, $blog_name);
      ↓
    my($title, $excerpt, $url, $blog_name, $icode) = map scalar $q->param($_),
                                  qw( title excerpt url blog_name charset);

    no_utf8($tb_id, $title, $excerpt, $url, $blog_name);
    require Jcode;
    my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=>'euc',
                   'UTF-8'=>'utf8'}->{$app->{cfg}->PublishCharset} || 'utf8';
    my $incoming = {'shift_jis'=>'sjis','iso-2022-jp'=>'jis','euc-jp'=>'euc',
                    'utf-8'=>'utf8'}->{lc($icode)} || Jcode::getcode($excerpt . $title . $blog_name);
    $title = Jcode->new($title, $incoming)->$charset();
    $excerpt = Jcode->new($excerpt, $incoming)->$charset();
    $blog_name = Jcode->new($blog_name, $incoming)->$charset();

  2. 173行目移行を書き換え
    if (length($excerpt) > 255) {
        $excerpt = substr($excerpt, 0, 252) . '...';
    }
      ↓
    if (length($excerpt) > 255) {
        $excerpt = substr(Jcode->new($excerpt, $charset)->euc(), 0, 252);
        if ($excerpt =~ /\x8F$/ or $excerpt =~ tr/\x8E\xA1-\xFE// % 2) {
            chop $excerpt;
        }
        $excerpt = Jcode->new($excerpt . '...', 'euc')->$charset();

    }
    lib/MT.pm
  1. 560行目以降を書き換え
    ## Build query string to be sent on each ping.
    my @qs;
    push @qs, 'title=' . MT::Util::encode_url($entry->title);
    push @qs, 'url=' . MT::Util::encode_url($entry->permalink);
    push @qs, 'excerpt=' . MT::Util::encode_url($entry->get_excerpt);
    push @qs, 'blog_name=' . MT::Util::encode_url($blog->name);
    my $qs = join '&', @qs;
      ↓
    ## Build query string to be sent on each ping.
    require Jcode;
    my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=>'euc',
                   'UTF-8'=>'utf8'}->{$mt->{cfg}->PublishCharset} || 'utf8';

    my @qs;
    push @qs, 'title=' . MT::Util::encode_url(Jcode->new($entry->title, $charset)->utf8);
    push @qs, 'url=' . MT::Util::encode_url(Jcode->new($entry->permalink, $charset)->utf8);
    push @qs, 'excerpt=' . MT::Util::encode_url(Jcode->new($entry->get_excerpt, $charset)->utf8);
    push @qs, 'blog_name=' . MT::Util::encode_url(Jcode->new($blog->name, $charset)->utf8);
    push @qs, 'charset=utf-8';
    my $qs = join '&', @qs;


« 今更、踊る大捜査線にはまる | メイン | カエルコーナー »

Trackbacks

このエントリーのトラックバックURL:

この一覧は、次のエントリーを参照しています: Trackbackの文字コード指定方法最終(予定):

» Trackback SHOULD be in UTF-8 送信元 blog.bulknews.net
Milano::Monolog: Trackbackの文字コード指定方法最終(予定) 先日の座談会でちらっとTrackbackの文字コードの指定方法について話が出ました。 その時、送るときはUTF-8で統一しませんか?という案が出ました。参加したメンバーが軒並みすごい方々だったので、この案を実装... [詳しくはこちら]

» Trackback 送信元 blog.bulknews.net
今日の「やっぱイジメたいです.とことんまで.」(2003-09-02) 今の実装では受ける時はcharsetパラメタ無視してUconvやNKFの推測におまかせだけど,ちゃんとcharset見るようにした方がいいかも.どちらにしろ,MTからTrackback受けるにはUconv必須ってことになりそう.ただで... [詳しくはこちら]

» TrackBackのUTF-8化について 送信元 dh's memoranda
ミラノさんのところや、ミヤガワさんところでも話題になっていますが、TrackBack で送信するコードを UTF-8 化しようという話について。 大体わたしのいいたいこともミヤガワさんが書かれていますが、ちょっと追加。 以前、わたしのところに、台湾の方からトラックバックもら... [詳しくはこちら]

» Trackback の文字コードにまつわる議論についてのお話。 送信元 NDO::Weblog
blog.bulknews.net: Trackback UTF-8を扱えるツール(A)は、 * 送信はUTF-8 とし、charset=utf-8 をつけて送信 * 受信時は charset をみて判断。なければ UTF-8 と判断(または自動判別も可) UTF-8を扱えないツール(B)は、 * 送信はcharset=euc-jp などをつけて送信 * 受信はch... [詳しくはこちら]

» TrackBack文字コード仕様 送信元 @ parallel minds
先日行われた座談会でMovableTypeのTrackBack文字コードについての話題が出たようで それを受けてのパッチが新たに作成されたとのことです。 詳しくは上記milanoさんのentryを見ていただくとして、 それに関連するentryをいくつかあげておきます。 [詳しくはこちら]

» trackback 文字コード 続き 送信元 幻燈稗史/magic-lantern romance
韓国語での事情をちらっと調べたりしました。 [詳しくはこちら]

» Trackback UTF-8化 送信元 覚え書き
先日来、ウェブログのエライ人たち(誰)のあいだで、Trackbackの文字コードをUTF-8に統一しようというお話があったのは、そこかしこで目にしていたのですが。今日、(めったにやらない)Trackback Pingを送信した際、先方のblogに文字化けを発生させてしまい、ううむこりゃ... [詳しくはこちら]

» トラックバックの文字コードをUTF-8に 送信元 Zopeジャンキー日記
以前、OpenSector.orgにトラックバックを打って文字化けし、その後直してもらったという経験をして、その後はトラックバックを打つとき、相手方のサイトの文字コードをチェックして、それにあわせたコードで打って文字化けしないようにしている。 しかしこれはちょっと面... [詳しくはこちら]

» 俄然楽しくなってきました 送信元 くろももDialy
TrackBackの文字が化ける件、みらのさんのTrackbackの文字コード指定方法最終(予定)を参考にいじってみました。 コメントもすべてUTF-8で表示されてくれれば問題解決なのですが。 これまであまりにも問題なく動いて拍子抜けしていたのですが、初めてソースに手を加えたら、... [詳しくはこちら]

» Trackbackの文字コード指定方法を変更 送信元 from TSUKUBA
Milano::Monolog: Trackbackの文字コード指定方法最終(予定)Movable TypeのTrackbackはUTF-8で送るのを最終案としたいところ。賛同が得られたらウレシイです。... [詳しくはこちら]

» TrackBackCode 送信元 PukiWiki/TrackBack 0.1
TrackBackの文字コード Milano Monolog Trackbackの文字コード指定方法最終(予定) blog.bulknews.net Trackback SHOULD be in UTF-8 thebadtiming.com Blog Trackback の文字コード 今日の「やっぱイジメたいです.とことんまで.」 Trackbackの文字コード指... [詳しくはこちら]

» TrackBack文字コードを何とかしよう 送信元 Zakimi::Blog
Weblogの先輩たちに習いTrackback送信時の文字コードをUTF-8に統一しました。いまいち使わないTrackBackだけどとりあえずみようみまねでやってみました。 Milano::Monolog: Trackbackの文字コード指定方法最終(予定)... [詳しくはこちら]

» MT初期カスタマイズ2 送信元 BBBLOG
MOVABLE TYPEのカスタマイズ第二弾です。 numalog: MTいじり まだトラックバックを有効にしないで使用していますが、トラックバック着信時の運用を楽にしたかったので、このカスタマイズを取り込んでおきます。 Milano::Monolog: Trackbackの文字コード指定方法最終(予定) ... [詳しくはこちら]

» Movabletype 2.65 送信元 Column@nak
Moveabletypeがver.2.65にアップデートされていたので2.64からアップデート。セキュリティ関連対策が主な更新内容だが、ATOM syndicationにも対応したのこと。 [詳しくはこちら]

» .Text の修正(トラックバック関連) 送信元 青柳臣一 blog
.Text 0.95 のトラックバックを utf-8 で送るように修正しました。 [詳しくはこちら]

» トラックバックを実装してみて 送信元 何はなくとも XML InfoSet
トラックバックの実装には、大きく2つの問題がある。1つはトラックバックを受けるメカニズムの信頼性で、これは何もトラックバックに限った話ではなく、インターネット... [詳しくはこちら]

» trackbackの文字コード 送信元 weblog.hikoboshi.mac
ウチのシステムのtrackback機構も、とりあえずこの仕様に準じて見ようと思いました。仕様が固まっていれば、作りやすいんですけどね(笑。 [詳しくはこちら]

» 文字コードの話。#2 送信元 あなたのサイト名
文字コード、実際には 「トラックバックを送るときは UTF-8 で統一しませんか?」 という話なのですが、手動トラックバック を UTF-8 で今のところ送っているんですけどね。... [詳しくはこちら]

» 續・L冷!潟ヮ痺俄 ・・・・2 送信元 ROUTE286
續・L冷!潟ヮ痺俄√M溷9帚 ・∴?・娯"遺"・ャ・・ヰ・・!・r・≫!銀 ・″・・UTF-8 ・х輝筝€・冷 障○・凪 玖[溪・・・>・・ァ宴≦瘁・>メ吮 娯√㈲・補"遺"・ャ・・ヰ・・!・・・UTF-8 ・т・・・>瘁凪!榊≫ c<瘁・!銀!凪 с☆・鯛 ・∞ム・.. [詳しくはこちら]

» エンコーディング 送信元 Column@nak
webのエンコーディングについて皆さん同じ悩みを持っているようで。 UTF-8がいいのだろうか・・・ Trackbackの文字化け対策を発見。 早速実装してみる。次のTrackbackが楽しみ。 追記: おのさんからTrackbackがきた。 おのさんもJIS→UTF-8対策を行ったようでこっちのUTF... [詳しくはこちら]

» Wiki SCOOP 送信元 PukiWiki/TrackBack 0.1
Wiki SCOOP 暫定開業 雑誌の通り軽量サーバー使用で軽いが信頼でけん まあ暇見て本格運用するべ PHPは懲りている RSSはまったく動かん   XML ページを表示できません XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新... [詳しくはこちら]

» Wiki SCOOP 送信元 PukiWiki/TrackBack 0.1
Wiki SCOOP 暫定開業 雑誌の通り軽量サーバー使用で軽いが信頼でけん まあ暇見て本格運用するべ PHPは懲りている RSSはまったく動かん   XML ページを表示できません XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新... [詳しくはこちら]

» Wiki YUMA 送信元 PukiWiki/TrackBack 0.1
Wiki SCOOP 【Wiki】やっと少しだけ、お仕事がやりやすくなったよ、暫定スタートでつ 【本日の更新】 Wiki YUMA 【茨城岩井市】女性置き去り事件 Virus 新潟柏崎冷蔵庫殺人事件容疑者逮捕 雑誌の通り軽量サーバー使用で軽いが信頼でけん まあ暇見て本格運用する... [詳しくはこちら]

» Wiki YUMA 送信元 PukiWiki/TrackBack 0.1
Wiki SCOOP 【Wiki】やっと少しだけ、お仕事がやりやすくなったよ、暫定スタートでつ 【本日の更新】 Wiki YUMA 【茨城岩井市】女性置き去り事件 Virus 新潟柏崎冷蔵庫殺人事件容疑者逮捕 雑誌の通り軽量サーバー使用で軽いが信頼でけん まあ暇見て本格運用する... [詳しくはこちら]

» aspTrackBack 送信元 sairix.ddo.jp
sairix製のTrackBackシステム。"aspTrackBack"についてのIndexページです。 aspTrackBackはIIS上のASP(VBScript)で動作します。別のコンポーネントのインストールを要求しません。 まだ、テスト中なのでソースは公開してません。機能不全を起こすことがあります。 ... [詳しくはこちら]

» 2ちゃんねるpingβ 送信元 2ちゃんねる
PHP系blogツール スレッドからのpingです。 [詳しくはこちら]

» トラックバックの文字化け解消 送信元 mel's blog...
ようやく直しました。 私の場合はトラックバックを受けた場合は特に問題は無かったの... [詳しくはこちら]

» 〓〓〓遵d〓〓 送信元 醇dA〓遵ョ醇縁・遵・・
遵ネ遵シ遵e遵ェ醇T醇D遵H醇f醇d醇h醇N醇h遵ゥ遵H遵ョ遵・遵d醇Kb遵シ醇D遵ェ遵e遵e〓〓醇N醇h遵ゥ〓〓遵ゥ醇Z遵Hc... [詳しくはこちら]

» Apache 送信元 PukiWiki/TrackBack 0.1
Wiki SCOOP お品書き お品書き Apache入門編 WindowsでApacheを 一部サーバーでApacheを採用とな Apache... [詳しくはこちら]

» Apache/p2 送信元 PukiWiki/TrackBack 0.1
PrevApache HomeUp 添付File 問題 Apache の LimitRequestBody で引っ掛かっている可能性が高いです。R... [詳しくはこちら]

» Apache/p03 送信元 PukiWiki/TrackBack 0.1
#(Apache) 「画像の盗用」を防ぐ この例は、別のサーバにいる人が、あなたのサーバにある画像を inline 画像として使 用することを防ぎます。 こ... [詳しくはこちら]

» トラックバック 送信元 nosonoso

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓c〓(属〓〓〓~〓〓〓〓〓br /> 〓c〓〓〓〓〓〓〓茯帥〓〓〓〓〓障〓〓〓〓

...

[詳しくはこちら]

» Trackbackの文字コード 送信元 会社員日記
exciteにtrackbackしたら文字化けしてしまいました。 xrea, l... [詳しくはこちら]

» Exciteブログへのトラックバックが文字化けしてしまう件について 送信元 Rainy days, Sunny days
このブログで使っている文字コードはEUC-JP、一方のExciteブログはUTF-8。 [詳しくはこちら]

» Movable Type3.15-jaのトラックバック文字化け問題 送信元 Zerosylph Diary
Zerosylphy DiaryがMovable Type 3.15-jaで運用... [詳しくはこちら]

» トラックバック送信時の文字化け 送信元 おおきに京都
 トラックバックを素直にShift-JISからUTF-8送るとしっかり文字化けしてました。 [詳しくはこちら]

» パスワードでログインできない! 送信元 おおきに京都
 お花見ボケでしばらく更新が滞って久々にログインしようとしたら、げぇっ!ログイン... [詳しくはこちら]

» Exciteブログでトラックバックが文字化け解決策 送信元 GIFアニメ工房
MTブログからExciteブログにトラックバックを送ると文字コードの違いで文字化けしてします。UTF-8でトラックバックを送るように改良しなければいけないみたい... [詳しくはこちら]

» トラックバックの文字化け対策 送信元 お気楽アドミン
特定のサイトにトラックバックをすると文字化けすることがわかりましたんで 修正してみました・・・。 原因はうちが「EUC-JP」でそのサイトは(exblog)UT... [詳しくはこちら]

» 最近わかった事 送信元 ぼっかつ かつどー
もうこうなれば、3回目もキチンと更新 最近ブログやっててわかったことなんですが どうやら、ウチのブログはトラックバックすると文字化け起こすみたいです おそらく、... [詳しくはこちら]

» p茀境†[茀梂цO茀†鎂ł†††I 送信元 †麓s
@芨††茀†P舁†舃††X退†††Bċv††††O茀†鎂†悤舁†芽苧††††AI莍茀侃C莓... [詳しくはこちら]

» p茀境†[茀梂цO茀†鎂ł†††I 送信元 †麓s
@芨††茀†P舁†舃††X退†††Bċv††††O茀†鎂†悤舁†芽苧††††AI莍茀侃C莓... [詳しくはこちら]

» aspTrackBackの受信部分 送信元 sairix.ddo.jp
なんか最近、aspTrackBackとかいうキーワードで検索する人がいたのでなんかあったのかと思ったら、読者の方からメールで受信部分を見たいよと要望が来た... [詳しくはこちら]

» 〓〓〓〓〓〓〓〓〓〓〓〓篆≧〓〓〓〓絖〓〓〓〓В羆〓9 送信元 nfl's notebook
〓〓〓〓域〓腓障〓莅〓〓〓〓〓〓〓〓莊〓〓〓〓〓〓吾〓〓画〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓茵〓〓〓〓〓〓〓〓〓〓〓... [詳しくはこちら]

Comments (7)

KOW:
1

こんにちは。
上記の通り、変更してみたつもりなのですが、以下のmt.cgiにアクセスすると以下のエラーが出てしまいました。文法がわからないものでどう対処していいか分かりません。すみませんが、ご教授願えますか?

Got an error: Global symbol "$app" requires explicit package name at lib/MT.pm line 563. Compilation failed in require at lib/MT/App.pm line 14. BEGIN failed--compilation aborted at lib/MT/App.pm line 14. Compilation failed in require at lib/MT/App/CMS.pm line 14. BEGIN failed--compilation aborted at lib/MT/App/CMS.pm line 14. Compilation failed in require at mt.cgi line 21.

KOW:
2

度々すみません。↑のエラーを読むと、なんか$appの宣言が必要って読めるんですが違いますかね?

3

>KOWさん

すみません、MT.pm は、

$app->{cfg}->PublishCharset

ではなく、

$mt->{cfg}->PublishCharset

でした。

KOW:
4

早速の回答ありがとうございます。
直りました。ありがとうございます。

5

トラックバック先に残る私のurlの......./~kaname/blog/の~kの部分が変な漢字に化けるんですが解決方法ってあるんでしょうか?

oyama:
6

はじめまして。
上記のMT.pmの変更と
http://rebecca.ac/milano/mt/archives/000063.html
の1.で、エキサイトはトラックバックの送受信とも文字化け解消しました。
ただ今度は、エキサイト以外のブログから受信したトラックバックが文字化けするようになってしまいました(送信した方は問題ないです)。
ただ上記のTrackback.pmの変更を行うと、エラーになってしまうのです。

元のソースを↓----------------------------------------------
my($title, $excerpt, $url, $blog_name, $enc) = map scalar $q->param($_),
qw( title excerpt url blog_name charset);

no_utf8($tb_id, $title, $excerpt, $url, $blog_name);
----------------------------------------------
上記ソースに変更し、PublishCharset} || 'utf8';
のところだけ'euc'に変えました(うちのサーバーが文字コードがEUC-JPで、どうしてもEUCにしなければならないので)。
素人ですみません。もしお気づきの点があれば教えていただけると幸いです。
よろしくお願いします。

Anonymous:
7

なぜ,"encoding" ではなく,"charset" なのでしょう。
その点理解に苦しみます。

Post a commnet

AMN sponsor rolls


著書

実践Web2.0 BOOK 人気ブロガー直伝! 一歩先行くWeb2.0的ワーキングスタイル
ムーバブル・タイププラグインディレクトリ―PROFESSIONAL NETWORK