ページ

2004年1月26日月曜日

.Text の修正(トラックバック関連)

.Text はトラックバックに対応してるんですが、日本語を使ってるとうまく動きません。
文字化けするとかいう次元じゃなく、トラックバックを送る途中で例外が出て失敗しちゃいます。





Dottext.Framework\Tracking\Notification.cs 81行目付近
    if(entry.HasDescription)
    {
        notify.Description = entry.Description;
    }
    else
    {
        //entry.Description = entry.Title;    
        notify.Description = entry.Title;    
    }
上記のように entry.Description = entry.Title; というのは明らかにおかしいので notify.Description = entry.Title; に修正。





Dottext.Framework\Tracking\TrackBackNotificationProxy.cs 81行目付近
    //string parameters = "title=" + HtmlEncode(title) + "&url=" + HtmlEncode(link) + "&blog_name=" + HtmlEncode(blogname) + "&excerpt=" + HtmlEncode(description);
    string parameters = "title=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(title))
                      + "&url=" + HttpUtility.UrlEncode(link)
                      + "&blog_name=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(blogname))
                      + "&excerpt=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(description))
                      + "&charset=utf-8";
もともとのコードはまったく文字コードのことを考えてない。なので、utf-8 に変換してやるように修正。ここが例外が出る原因で、utf-16 のままだと String.Length と実際に送信するバイト数が違うために失敗してしまいます。
ちなみに、下記のように「トラックバックは utf-8 でいいんじゃないの?」という方向のようですので、とりあえずはこれでいいんじゃないかと思います。

Milano::Monolog 「Trackbackの文字コード指定方法最終(予定)」
http://rebecca.ac/milano/mt/archives/000396.html

3 件のコメント:

  1. うんうん気になってたんですよ(爆)

    ありがとうございます


    うちも近いうちに直そう...

    返信削除
  2. はじめまして。一色と申します。よろしくお願いします。


    「.Text」のトラックバックの修正方法の公開、ありがとうございます。


    で、突然ですが、要望があります。


    いきなり要望を出すなんて非常に恐縮なのですが、TrackBack送信先URLを、できれば分かりやすいところ(例えば、[フィードバック]の上あたりとか)に表示していただけるとありがたいのですが・・・。


    私はRSSフィードの中からTrackBack URLを探し出して送信してみたのですが、すごく分かりにくいと思いました。


    ご対応いただけると嬉しいです。

    では。

    返信削除
  3. おお、青柳さん、ぜひメーリングリストに投げてください :)


    私も調べないといけないなぁと思っていたネタでした。これ。

    返信削除