2004年08月29日
[MT3.0] メールの文字化け対策
コメント、トラックバックの通知メールのタイトルと本文の一部が文字化けしてしまう。原因は、案の定文字コードとしてEUC-JPを利用していることだった。
以下は、/lib/MT/App/Comments.pmの425行目からの内容
my %head = ( To => $author->email,
From => $from_addr,
Subject =>
'[' . $blog->name . '] ' .
$app->translate('New Comment Posted to \'[_1]\'',
$entry->title)
);
translate()関数の中では、'New Comment Posted to'の部分を、/lib/MT/L10N/ja.pmに記述されているUTF-8の文字列に置き換え、その後mt.cfgのPublishCharsetに記述されている文字列に変換している。
ところが$entry->titleはEUC-JPであるため、結果としてUTF-8とEUC-JP混在の文字列をEUC-JPに変換することになり、文字化けが発生してしまう。
いくつか解決策は考えられて、/lib/MT/L10N/ja.pmの内容をUTF-8に変換し、標準のコードをUTF-8としている部分を全てEUC-JPにすることも考えた。この方法には日本語メッセージをEUC-JPで編集できるなどのメリットもあるが、Movable Type自体のバージョンアップに追随するのが大変になりそうなので、楽な解決方法を選んだ。
楽な解決方法 - $entry->titleを一度UTF-8に無理やり変換
$app->translate('New Comment Posted to \'[_1]\'',
MT::I18N::encode_text($entry->title,'','utf-8'))
楽と言っても、同様に直すところが何箇所もあって結構大変。
以下追記
俺のやり方、ダサダサでした。
ogawa::memorandaの、(2) PublishCharsetがUTF-8以外のとき、コメント・トラックバックの通知メールのタイトルなどが文字化けする(translateの問題)の方が、ずっとスマートです。っていうか、どうしてこのやり方にしなかったんだろう俺。
投稿者 かつ : 2004年08月29日 01:05
この記事のトラックバックURL
トラックバック一覧 (0件)
コメント一覧 (0件)
新規にコメントする
| 年間カレンダー | |||||||||||||
| 2007 年 |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 年 |
|
||||||||||||
| 2005 年 |
|
||||||||||||
| 2004 年 |
|
||||||||||||
| 2003 年 |
|
||||||||||||
| 2002 年 |
|
||||||||||||
| 2001 年 |
|
||||||||||||
| 2004年08月 | ||||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
サイト内の検索
このBlogのライセンス
Powered by Movable Type 3.17-ja