Mozilla 翻訳 フォーラム一覧 Mozilla 翻訳
Mozilla Japan 翻訳部門 ではmozilla.org 全体の日本語化を目指して活動しています。
Mozilla Japan のサイトは翻訳部門が和訳したドキュメントをベースに構築されています。
 
 よくある質問よくある質問   検索検索   登録ユーザ一覧登録ユーザ一覧   グループグループ   登録登録 
 ユーザ設定ユーザ設定   ログインして PM を確認ログインして PM を確認   ログインログイン 

AMOのユーザー登録結果確認メールのタイトル文字化け

 
トピックの新規投稿   返信    Mozilla 翻訳 フォーラム一覧 -> フリートーク
前のトピックを表示 :: 次のトピックを表示  
著者 メッセージ
masa



登録日: 2007年9月 04日
記事: 16


ユーザ情報を表示 メッセージを送信
記事 件名: AMOのユーザー登録結果確認メールのタイトル文字化け     投稿時間: 2008年1月11日(金) 10:20 引用

さきほどa.m.oの日本語版ページで gmail のアドレスでユーザー登録したら、
登録確認メールのタイトルが、

Firefox Add-ons へご登録いただきあ��がとうございます

になっていて、メールヘッダを確認したら

Subject: =?UTF-8?B?RmlyZWZveCBBZGQtb25zIOOBuOOBlOeZu+mMsuOBhOOBn+OBoOOBjeOBguOC?= =?UTF-8?B?iuOBjOOBqOOBhuOBlOOBluOBhOOBvuOBmQ==?=

となっていましたが、これはメールヘッダのエンコード/デコードのどちらが悪いのでしょうか?
濱崎



登録日: 2004年1月 27日
記事: 296
所在地: 静岡県


ユーザ情報を表示 メッセージを送信 ウェブサイトに移動 Yahoo メッセンジャー MSN メッセンジャー
記事 件名: Re: AMOのユーザー登録結果確認メールのタイトル文字化け     投稿時間: 2008年1月12日(土) 12:19 引用

符号化そのものはbase64にきちんと従っているようですから、文字化けの原因はデコード側にあると思います。

区切り(2番目の =?UTF-8?B )で文字化けしています。
base64 の書式が判る人は、簡単に確かめることができます。
区切りを超えて 4文字ずつ移し、手元の MUA で見てみてください。文字化けする場所が1文字ずつ移っていきます。

きっとデコードの過程で区切りに余計なものを入れたか削ったかしたのでしょう。
改行と空白は無視して素直につなげればいいんですけどね。
このあたりの実装をどうするかは MUA の作者も苦労している部分らしいです。
MIME の規定違反をする MUA (Outlook Express とか)が普及したことで、間違った規格が世に広まってしまったせいだとか。

もし、引用が改行も含めて正確なら、エンコード側にも問題があります。

ヘッダの MIME 変換を規定しているRFC2047日本語訳の例 をちょっと読んでみたところ、
行の長さにこういう規定があります。
Quote:
While there is no limit to the length of a multiple-line header
field, each line of a header field that contains one or more
'encoded-word's is limited to 76 characters.

ですから、この Subject: 行は 76文字に収めないといけません。しかし、1行目が80文字を超えています。
何文字か区切りの後ろに移せば規格を守ることができます。
ただ、この長さ規定違反が文字化けに影響しているわけではなさそうです。
[test user]
ゲスト






記事 件名:     投稿時間: 2008年1月12日(土) 16:35 引用

multi-byte utf-8のバイト列の途中でぶった切っちゃぁいけません。。
濱崎



登録日: 2004年1月 27日
記事: 296
所在地: 静岡県


ユーザ情報を表示 メッセージを送信 ウェブサイトに移動 Yahoo メッセンジャー MSN メッセンジャー
記事 件名: 言われてみれば その通り     投稿時間: 2008年1月12日(土) 18:51 引用

そうですね。
=?utf-8?b 〜 ?= までのひとまとまりが それぞれ独立して読める形にデコードできないといけませんよね。(☆)

# 理論的には、全部Base64デコードしたビット列をつなぎ合わせて、
# その後で頭から UTF-8 として解読してもいいわけですが、
# Subject: 全体の長さには制限がないため(何行になってもいい)、あまり賢くないやりかたです。

以下、正しいエンコーディングの例です。
76文字制限も考慮して「た」の前で分割した場合です。

Quote:
Subject: =?utf-8?b?RmlyZWZveCBBZGQtb25zIOOBuOOBlOeZu+mMsuOBhA==?=
=?utf-8?b?44Gf44Gg44GN44GC44KK44GM44Go44GG44GU44GW44GE44G+44GZIA==?=


☆という条件も考慮するなら、エンコーディングする側は文字コード──この場合は UTF-8 ──を考慮してビット列を文字の境界で分割し、それぞれを符号化する必要があります。
masa



登録日: 2007年9月 04日
記事: 16


ユーザ情報を表示 メッセージを送信
記事 件名: AMOのバックエンドのバグ?     投稿時間: 2008年1月15日(火) 09:35 引用

AMOのバックエンドのバグという判断でいいのでしょうか?
# bugzillaに投げるべき?
濱崎



登録日: 2004年1月 27日
記事: 296
所在地: 静岡県


ユーザ情報を表示 メッセージを送信 ウェブサイトに移動 Yahoo メッセンジャー MSN メッセンジャー
記事 件名: Re: AMOのバックエンドのバグ?     投稿時間: 2008年1月15日(火) 11:19 引用

bugzillaに投げてもいいと思います。整理すると問題点は2つで、

  1. エンコード後の Subject: 行の1行目が76文字を越えていること
  2. 行区切りが UTF-8 の文字境界とずれていること

1. はRFC2047 違反です。
2. については、対応しているメーラがあるかもしれないので(★)AMOのバックエンドのバグとは言い切れません。
RFC2047 にも、文字境界で切らなければいけないという記述はありませんから。

対応してもらえるかどうかはまた別の話ですが、ASCII文字圏では起きない事例でしょうから
報告しておくのはいいんじゃないでしょうか。
Thunderbird で読んでも文字化けするということなら対応してもらえるかもしれませんね。

★この前の投稿で、
濱崎 wrote:
ビット列をつなぎ合わせて、その後で頭から UTF-8 として解読…

と書きましたが、考え直してみると
余りだけ取っておいて後からくるビット列につなげればいいので
Code:

○○○○●
↑   ↑余りビット列(これを次の行の頭とつなげて UTF-8 として解読する)

これらは行の中で解読できるので片付いてしまう。

Subject 全体が長くても必要な記憶領域の量が爆発することはありません。
ちょっと実装の手間が増えるので、そこまで対応している MUA があるかな〜?ということです。
言を左右していて済みません。
masa



登録日: 2007年9月 04日
記事: 16


ユーザ情報を表示 メッセージを送信
記事 件名: Bugzilla登録     投稿時間: 2008年1月15日(火) 17:12 引用

https://bugzilla.mozilla.org/show_bug.cgi?id=412409
で登録しました。

ゲスト






記事 件名: Re: AMOのバックエンドのバグ?     投稿時間: 2008年1月15日(火) 20:38 引用

濱崎 wrote:
2. については、対応しているメーラがあるかもしれないので(★)AMOのバックエンドのバグとは言い切れません。
RFC2047 にも、文字境界で切らなければいけないという記述はありませんから。
記述がありますので、バグと言って良いと思います。
RFC2047 wrote:
Each 'encoded-word' MUST represent an integral number of characters.
A multi-octet character may not be split across adjacent 'encoded-
word's.
濱崎



登録日: 2004年1月 27日
記事: 296
所在地: 静岡県


ユーザ情報を表示 メッセージを送信 ウェブサイトに移動 Yahoo メッセンジャー MSN メッセンジャー
記事 件名: Re: AMOのバックエンドのバグ?     投稿時間: 2008年1月16日(水) 23:47 引用

うわっ、そのものずばりですね。あ さん、ありがとうございます。
boundary (=境界)で探して引っかからなかったので、ないものと思ってしまいました。 Crying or Very sad

あ さんが引用してくれた記述は、
RFC 2047 http://tools.ietf.org/html/rfc2047
5. Use of encoded-words in message headers
の (3)の中、後ろから 3つめのパラグラフの中にあります。
masa



登録日: 2007年9月 04日
記事: 16


ユーザ情報を表示 メッセージを送信
記事 件名: PHPMailerの問題らしいです     投稿時間: 2008年5月08日(木) 08:50 引用

どうやらPHPMailerのバグっぽいです。
XOOPS(メール送信のバックエンドがPHPMailerです)のフォーラムでも同様の
不具合と思われる現象が報告されています。

http://xoopscube.jp/modules/newbb/viewtopic.php?topic_id=6940&forum=11&post_id=35435
masa



登録日: 2007年9月 04日
記事: 16


ユーザ情報を表示 メッセージを送信
記事 件名: 修正されました。     投稿時間: 2008年5月14日(水) 13:20 引用

PHPMailerでパッチが既にあったので、それを取り入れる形で修正されました。
ご協力いただいた皆さんに感謝します
指定期間中に書かれた記事を表示:   
トピックの新規投稿   返信    Mozilla 翻訳 フォーラム一覧 -> フリートーク All times are GMT +9:00
Page 1 of 1

 
別のフォーラムに移る:  
新規トピックを投稿できます
既存トピックに返信できます
自分の記事を編集できません
自分の記事を削除できません
投票に参加できません


Powered by phpBB © 2001, 2006 phpBB Group (customized by dynamis)