― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

返信する
ユーザー名:
件名:
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: ON
BBCode を無効にする
フォントサイズ:
フォントカラー
スマイリーを無効にする
URL を自動的にパースしない
ユーザエージェントを表示する
認証コード
KCaptcha by Nikita_Sp
   

トピックのレビュー - 添付ファイル名に全角スペースを含むと一部文字化けする
作成者 メッセージ
  記事の件名:  Re: 添付ファイル名に全角スペースを含むと一部文字化けする  引用付きで返信する
詳細かつ丁寧な検討をありがとうございます。
言いだしっぺなのに割と雑な検証だったので…

偶然的通行人 さんが書きました:
【Thunderbird 38.0.1 上に存在する(A)(B)2つのメッセージに次の操作をおこないます。

(1)アタッチメントバー上に表示される添付ファイル名をクリック
   (これはコンテキストメニューの [開く] と同等です。文字化けが報告されている操作です。)
(2)アタッチメントバー右端の [保存] ボタンをクリック
   (これはコンテキストメニューの [名前を付けて保存] と同等です。)
(3)メッセージ本体を [名前を付けて保存] -> [ファイル] で eml ファイルとして保存
(4)メッセージ本体を ドラッグ&ドロップで eml ファイルとして保存

添付ファイル名の表示部分が「アタッチメントバー」というのをすっかり失念していて、曖昧な表現になってしまっていました。
emlファイルとして保存した場合は問題が出ないのですね。
添付ファイルのみを、編集画面のアイコンをつかんでデスクトップなどにドラッグ&ドロップした場合には問題なく保存されているのは確認していました。

偶然的通行人 さんが書きました:
エンコーディングの違いに関わらず、Thunderbird 38.0.1 で添付ファイルを [開く] の動作を経由すると、全角スペースを含んだ部分が、Unicode のコード自体(u+3000)に準じた文字列に置き換わってしまうようです。

Unicodeの問題かも? と思ったので、本文も含め全てUTF-8(Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit)で試してみましたが、問題が再現してしまいました。
(今まではContent-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bitで試していました)

偶然的通行人 さんが書きました:
【参考2】
比較として、「テキスト ファイル 1.txt」を Firefox 38.0.6 で開きました。
ロケーションバーには、
file:///C:/Users/********/Desktop/テキスト ファイル 1.txt
と表示されます。
この状態から、[名前を付けてページを保存] を実行すると、ファイル名が「テキスト%u3000ファイル 1.txt」になります。
Firefox 38.0 系では、ダウンロード時のファイル名だけに起こる問題ではなさそうです。

こちらでも確認しました。
Thunderbirdだと、「○○○を開く」の画面が出なければいいんじゃない? と考えてましたが、Firefoxではもっと違うところに問題があるのかもしれませんね。

とりあえずは、再現条件と回避方法もはっきりしているので「↓保存」のアイコンor「名前を付けて保存」を選んで対処したいと思います。
皆さまありがとうございました。
投稿記事 Posted: 2015年6月19日(金) 19:54
  記事の件名:  Re: 添付ファイル名に全角スペースを含むと一部文字化けする  引用付きで返信する
遅ればせながら、興味があったのでコメントさせていただきます。

当方でも次の環境条件下で再現しました。
Mozilla/5.0 (Windows NT 6.2; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1

Thunderbird 38.0.1 上でどのような操作をすれば再現するかは、みなさんが指摘されているとおりですが、遅参の手みやげ替わりに少し追加テストしてみました。

【テスト条件】
Thunderbird 38.0.1 で、次のような条件のメッセージを作成します。
(A)
件名(Subject):テキスト ファイル 1 …… テキスト[全角スペース]ファイル[半角スペース]1
添付ファイル名:テキスト ファイル 1.txt …… 拡張子以外、Subject と同じ。

このメッセージソースは次のようになりました。
----------------------------------------------------------------
(メッセージヘッダ中の Subject)
Subject: =?UTF-8?B?44OG44Kt44K544OI44CA44OV44Kh44Kk44OrIDE=?=

(添付パートのヘッダ)
Content-Type: text/plain; charset=Shift_JIS;
name="=?UTF-8?B?44OG44Kt44K544OI44CA44OV44Kh44Kk44OrIDEudHh0?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename*0*=iso-2022-jp''%1B%24%42%25%46%25%2D%25%39%25%48%21%21%25%55%25;
filename*1*=%21%25%24%25%6B%1B%28%42%20%31%2E%74%78%74
----------------------------------------------------------------

Thunderbird 31.7.0 で、(A)と同条件のメッセージ(B)を作成します。
(B)
件名(Subject):テキスト ファイル 1 …… テキスト[全角スペース]ファイル[半角スペース]1
添付ファイル名:テキスト ファイル 1.txt …… 拡張子以外、Subject と同じ。

これを eml ファイルとしてエクスポートし、Thunderbird 38.0.1 にインポートします。
Thunderbird 38.0.1 でメッセージソースを確認した結果は次のとおりです。
----------------------------------------------------------------
(メッセージヘッダ中の Subject)
Subject: =?ISO-2022-JP?B?GyRCJUYlLSU5JUghISVVJSElJCVrGyhCIDE=?=

(添付パートのヘッダ)
Content-Type: text/plain; charset=Shift_JIS;
name="=?ISO-2022-JP?B?GyRCJUYlLSU5JUghISVVJSElJCVrGyhCIDEudHh0?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename*0*=iso-2022-jp''%1B%24%42%25%46%25%2D%25%39%25%48%21%21%25%55%25;
filename*1*=%21%25%24%25%6B%1B%28%42%20%31%2E%74%78%74
----------------------------------------------------------------
Subject および添付ファイルの name のエンコーディングだけが異なっています。

Thunderbird 38.0.1 上に存在する(A)(B)2つのメッセージに次の操作をおこないます。

(1)アタッチメントバー上に表示される添付ファイル名をクリック
   (これはコンテキストメニューの [開く] と同等です。文字化けが報告されている操作です。)
(2)アタッチメントバー右端の [保存] ボタンをクリック
   (これはコンテキストメニューの [名前を付けて保存] と同等です。)
(3)メッセージ本体を [名前を付けて保存] -> [ファイル] で eml ファイルとして保存
(4)メッセージ本体を ドラッグ&ドロップで eml ファイルとして保存

拡張子を除けば、件名(Subject)と添付ファイル名は同一です。

【結果】
これで、(Y)「テキスト ファイル 1」となるか、(N)「テキスト%u3000ファイル 1」となるかを、実地に試した結果が下記です。

ーーー(A)(B)
(1)ーーー
(2)ーーー
(3)ーーー
(4)ーーー

・添付ファイルの保存では、添付ファイル名のエンコーディングが UTF-8 でも、ISO-2022-JP でも、[開く] コマンドから実行(1)すると「テキスト%u3000ファイル 1.txt」となりました。
・[名前を付けて保存] では(2)、どちらのファイル名にも問題は起こりませんでした。
・メッセージそのものの保存では、どちらの保存手順(3)(4)でも、保存されたファイル名に文字化けは発生しませんでした。

エンコーディングの違いに関わらず、Thunderbird 38.0.1 で添付ファイルを [開く] の動作を経由すると、全角スペースを含んだ部分が、Unicode のコード自体(u+3000)に準じた文字列に置き換わってしまうようです。

【参考1】
Unicode の取り扱いに何らかの問題があるのなら、必ずしも全角スペース(U+3000)に限った話ではないかもしれないと思い、少し試してみました。
「文字化けなんてしない。.txt」というファイルを添付し、上記の発生条件と同じ手順を踏むと「文字化けなんてしない%u3002.txt」となりました。
他にも、この事例に合致する文字があるかもしれません。

【参考2】
比較として、「テキスト ファイル 1.txt」を Firefox 38.0.6 で開きました。
ロケーションバーには、
file:///C:/Users/********/Desktop/テキスト ファイル 1.txt
と表示されます。
この状態から、[名前を付けてページを保存] を実行すると、ファイル名が「テキスト%u3000ファイル 1.txt」になります。
Firefox 38.0 系では、ダウンロード時のファイル名だけに起こる問題ではなさそうです。
同様の操作を Firefox 31.7.0 ESR で実行しても、元のファイル名のまま保存されます。%u3000 となる文字化けは起こりません。

簡単なテストの結果だけですが、少しは問題点の切り分けの足しになればいいな、と思います。
当面の回避策は、すでにご提案があるように、文字化けしない保存方法を選択することだと、ぼくも思います。
投稿記事 Posted: 2015年6月19日(金) 07:34
  記事の件名:  Re: 添付ファイル名に全角スペースを含むと一部文字化けする  引用付きで返信する
Bugzillaの検索と再現レポートありがとうございます。
助かりました。

kiki さんが書きました:
添付ファイルを「開く」と「名前を付けて保存」では、操作手順が異なりますが、その違いに
よって、結果が変化するのですね。

添付ファイルを「開く」のダイアログから「ファイルを保存する」を選ぶことで、再現しまし
た。

おっしゃる通りです。
最下部の添付ファイル名から「名前を付けて保存」を選ぶと問題が出ないことは把握済みだったのですが、「開く」の方は試していなかったのと、最初の添付画像ではトリミングで切り落としてしまっていたために報告が漏れていました。

最初の画像の青枠部分を選ぶと、いきなり「○○○を開く」のウィンドウが出るので、何らかの形で「○○○を開く」の表示が出た場合に再現するのだと思います。

Bugzillaにて「Thunderbirdでも再現します」ということで追記しました。
英語に自信がないのと、投稿直後に早速修正が入ってアレな感じですが。
(Comment3の時点では"open"の動作を未確認だったためです…)


添付ファイル:
attachment3.png
attachment3.png [ 16.17 KiB | 表示数: 12418 回 ]
attachment2.png
attachment2.png [ 32.05 KiB | 表示数: 12418 回 ]
投稿記事 Posted: 2015年6月18日(木) 21:37
  記事の件名:  Re: 添付ファイル名に全角スペースを含むと一部文字化けする  引用付きで返信する
 
添付ファイルを「開く」と「名前を付けて保存」では、操作手順が異なりますが、その違いに
よって、結果が変化するのですね。

添付ファイルを「開く」のダイアログから「ファイルを保存する」を選ぶことで、再現しまし
た。

添付ファイル:
添付ファイルを開く.png
添付ファイルを開く.png [ 22.68 KiB | 表示数: 12431 回 ]

添付ファイル:
添付ファイルのプロパティ.png
添付ファイルのプロパティ.png [ 11.44 KiB | 表示数: 12431 回 ]


とりあえずの回避方法は、
・添付ファイルエリア枠の「保存」ボタンで保存する
・添付ファイルの右クリックで「名前を付けて保存」で保存
になりますね。
投稿記事 Posted: 2015年6月18日(木) 20:37
  記事の件名:  Re: 添付ファイル名に全角スペースを含むと一部文字化けする  引用付きで返信する
 
当方では、再現しませんでした。
[環境:OS:Windows 7 Professional SP1 + Thunderbird 38.0.1 日本語版]


同じ「テスト ファイル 1.txt」という添付ファイル付きのメッセージの送受信でテストして
みました。
・メッセージ本文の文字コード:UTF-8、Shift_JIS

結果は、次のとおりです。
コード:
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101
Thunderbird/38.0.1
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="------------050602000602060703030008"

This is a multi-part message in MIME format.
--------------050602000602060703030008
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

添付ファイル名スペース入りテスト [UTF-8]

--------------050602000602060703030008
Content-Type: text/plain; charset=UTF-8;
name="=?UTF-8?B?44OG44K544OI44CA44OV44Kh44Kk44OrIO+8kS50eHQ=?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename*0*=UTF-8''%E3%83%86%E3%82%B9%E3%83%88%E3%80%80%E3%83%95%E3%82%A1;
filename*1*=%E3%82%A4%E3%83%AB%20%EF%BC%91%2E%74%78%74

a2lraQ0K5re75LuY44OV44Kh44Kk44Or5ZCN44OG44K544OIDQrjgYLjgYTjgYbjgYjjgYrj
gIDjgYvjgY3jgY/jgZHjgZMNCg==
--------------050602000602060703030008--

コード:
Content-Type: multipart/mixed;
boundary="------------010906030705010608040704"

This is a multi-part message in MIME format.
--------------010906030705010608040704
Content-Type: text/plain; charset=Shift_JIS
Content-Transfer-Encoding: 8bit

添付ファイル名スペース入りテスト [Shift_JIS]

--------------010906030705010608040704
Content-Type: text/plain; charset=UTF-8;
name="=?UTF-8?B?44OG44K544OI44CA44OV44Kh44Kk44OrIO+8kS50eHQ=?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename*0*=Shift_JIS''%83%65%83%58%83%67%81%40%83%74%83%40%83%43%83%8B%20;
filename*1*=%82%50%2E%74%78%74

a2lraQ0K5re75LuY44OV44Kh44Kk44Or5ZCN44OG44K544OIDQrjgYLjgYTjgYbjgYjjgYrj
gIDjgYvjgY3jgY/jgZHjgZMNCg==
--------------010906030705010608040704--


[参照スクリーンショット]
添付ファイルを「名前を付けて保存」でローカルに保存する
添付ファイル:
添付ファイル保存メニュー01.png
添付ファイル保存メニュー01.png [ 20.57 KiB | 表示数: 12443 回 ]


[参照スクリーンショット]
保存する際の Explorer の保存ダイアログウィンドウ
添付ファイル:
添付ファイル保存ウィンドウ.png
添付ファイル保存ウィンドウ.png [ 37.46 KiB | 表示数: 12443 回 ]


[参照スクリーンショット]
ローカルに保存した添付ファイルのプロパティ
添付ファイル:
テスト ファイル 1.txtのプロパティ.png
テスト ファイル 1.txtのプロパティ.png [ 12.78 KiB | 表示数: 12443 回 ]
投稿記事 Posted: 2015年6月18日(木) 19:48
  記事の件名:  Re: 添付ファイル名に全角スペースを含むと一部文字化けする  引用付きで返信する
Bug 1143644 - Downloading a file which name has U+3000, it will replace U+3000 to %U3000.
https://bugzilla.mozilla.org/show_bug.cgi?id=1143644

このバグと関係があるかもしれません。
投稿記事 Posted: 2015年6月18日(木) 12:53
  記事の件名:  添付ファイル名に全角スペースを含むと一部文字化けする  引用付きで返信する
Windows8.1+Thunderbird38.0.1環境下での確認です。
個人的にはBugの疑いが濃厚な印象です。

【現象】
Thunderbird38.0.1で、添付ファイル名の一部に全角スペースを含む場合、添付ファイル保存時にスペース部分が文字化けする
Thunderbird37.x(31.xの誤りです、訂正します:2015/6/18 0:25追記)やそれ以前では確認されていない

添付ファイルを保存する時に、添付画像の赤枠(「保存」のボタン)を押して保存する場合は文字化けが起きず、正常に保存されます。
青枠(ファイル名)をクリックして保存しようとすると、本来「テスト ファイル 1.txt」と保存されるべきところが「テスト%u3000ファイル 1.txt」と一部化けてしまいます。
画像の通り、メッセージペイン上では正常です。保存の時のみ起こります。
ファイルの中身には何ら問題なく、ファイル名のみの問題です。

提示画像の添付ファイル名は、メッセージソース上では
コード:
Content-Type: text/plain; charset=Shift_JIS;
name="=?UTF-8?B?44OG44K544OI44CA44OV44Kh44Kk44OrIO+8kS50eHQ=?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename*0*=iso-2022-jp''%1B%24%42%25%46%25%39%25%48%21%21%25%55%25%21%25;
filename*1*=%24%25%6B%1B%28%42%20%1B%24%42%23%31%1B%28%42%2E%74%78%74

となります。
charsetが上記ではShift-JISですが、UTF-8でも再現します。

拡張子は.txtに限らず発生します(最初気付いたのは.docxファイルでした)。
セーフモードでも再現します。
スペースが半角の場合は問題が起きません。また、全角スペースであってもスペースの直後に数字(全角、半角を問わない)があれば文字化けは起きないようです。

Bugzillaをざっと見た感じでは類似症状が見当たりませんでした。
他の環境でも再現するでしょうか?


添付ファイル:
attachment.png
attachment.png [ 64.95 KiB | 表示数: 12527 回 ]
投稿記事 Posted: 2015年6月17日(水) 21:57

All times are UTC + 9 hours


ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean