過去ログ表示


過去ログ 356 を表示

トピック内全 17 記事中の 11 〜 17 番目を表示
[ 最新記事及び返信フォームをトピックトップへ ]
このトピックの全ページ / [0] [1]

(環境: WinXP SP3/Other)

質問者の方に「試してみてください」と言った実験をしてみるとわかるとおり、
非常に長い、空白なし・改行なし・半角なし、の行をペーストすると、Wrapの設定の数値に関わらず、
text/plainのパートには、自動改行や強制改行に加え、一定間隔で半角スペースが一つ挿入されることになります。
質問そのものがコピペのみで、palさんへの応答は、ほんの短いものでほとんど説明がないので、おそらくコピペを多用するケースだと推測できます。
そうなると、
(a) 非常に長い行で、text/plainで、一定間隔のところに半角スペースがはいる
(b) テキストだけだと、text/plainだけが送られる、
の複合技だと推測できるのですが、
wrap=0だと、この半角スペースの挿入は、1000バイトごと、という感じで起こるはずで、そうだとすると、text/plainパートの表示で「一定間隔のところでスペースが入る」というような感じには見え難いはずです。
で、実際に、いったいどのくらいの長さの行をペーストしているのかとか、どのあたりのwrapの値で一定間隔とはどのくらいの文字数なのか、などを知るために、いくつか質問したのですが、
その質問を書いた直後に、拒否を感じる応答、だったので、こりゃ困る、と、
拒否ではなくマナーの話であって、どういった事情とか状況とかくらいは説明しなさいよ、と書いてもらって、なんとか回答してもらおうとした...(^^;

受け取り側がHTMLで表示なら、(b)を避けるだけでいいのですが、テキスト表示だと、一定間隔のスペースの表示は避けられません。
本質的な問題は、テキストに変換する時の空白の除去の問題ではなく、
テキストの空白や改行の処理は、英語と日本語では異なり、難しい問題を孕んでいるにも関わらず、
強制改行後に、HTMLソースの整形のために、勝手に行頭に複数の半角スペースを挿入するという、余計なことをしていることにあります。
テキストだと先頭の行に空白が入った問題も、本質的には全く同じです。
> <body>[改行]
> {連続する半角スペース}メールの最初のテキスト...
を作るので、テキストに変換したときに、この{連続する半角スペース}が、一つの半角スペースとして残る、という現象になりました。
この問題の時は、<body>直後から最初の要素までの間の空白は除去する、というような方法で回避したはずです。
これと同じような方法で(a)に対処しようとすると、日本語+改行+連続する半角スペース+日本語のテキスト、において、
日本語+改行+一つの半角スペース+日本語のテキスト、と解釈したあと、改行+一つの半角スペースを除去することになるだろうと思いますが、
この半角スペースが本当に不要なのかどうかは、一旦挿入されてしまうと、誰にも判別できません。
犯人は、強制改行後に、整形のための余計な半角スペースを行頭に勝手に挿入している側です。
先頭行の前の空白も、
> <body>[改行]
> メールの最初のテキスト...
> <body>メールの最初のテキスト...[改行]
で、簡単に起こらなくできた話のはずです。

このあたりについて、非常に例外的なケースで、もっと調査してバグとして報告しても時間の無駄なのか、
日本語のメールではやっぱり困るから、直してもらえるようにリクエストしておく必要があるのかは、私にはわかりません。
で、実際の例での状況をまず聞こうとしたのですが、おそらく回答はないでしょう。

palさん、majiさん、のらねこ さんは、このあたりについて、どう思われますか?
必要だという場合、日本語などの場合は行頭に半角スペースを挿入するHTMLの整形を行わないとか、そういったHTMLの整形はオプションで設定できるようにする、とかが必要だと思いますか?
強制改行のときは行頭に整形のための半角スペースを挿入しない、あたりの方が一般的でいいのかな?

(環境: WinXP SP3/Other)

私のほうにどう考えてますかと振られても困るわけですが。

要は 998バイトの折り返しと html->text 変換の問題ですよね?
998バイトの問題は RFC で must なんで、そうしないと転送上何が起こるか
分からんので、そうしないと駄目なわけです。
html で編集したテキストが html->text 変換で text パートに埋め込まれる
ので、WSP が入ってしまうって事でしょ?

要は、1行72バイト以内で改行するようにすれば、良いんじゃないでしょうかね?
#RFC で SHOULD なのは78バイトだけど

> 非常に長い、空白なし・改行なし・半角なし、の行をペーストすると、Wrapの設定の数値に関わらず、
> text/plainのパートには、自動改行や強制改行に加え、一定間隔で半角スペースが一つ挿入されることになります。

1000バイトの件に関しては、「CRLF を除いて、各行は 998 文字を超えてはな
らならず(MUST)」と書かれているので、そう言うことだと思います。
# RFC 5322(Internet Message Format), RFC 5321(Simple Mail Transfer Protocol)

で、さらに「78 文字を超えるべきではない(SHOULD)」と書かれているんで、
78バイト以内で改行しましょうということです。その程度で改行されていれ
ば HTML だろうとテキストだろうと問題ないんじゃないでしょうかね?

Thunderbird は使ってないんで、あんまり知りません。

> その質問を書いた直後に、拒否を感じる応答、だったので、こりゃ困る、と、
> 拒否ではなくマナーの話であって、どういった事情とか状況とかくらいは説明しなさいよ、と書いてもらって、なんとか回答してもらおうとした...(^^;

だから、それはある個人の書いた返信であって、他人がとやかく言うことではない
のではと書いてますよ?こういった場では他人に強制することは出来ません。

> 受け取り側がHTMLで表示なら、(b)を避けるだけでいいのですが、テキスト表示だと、一定間隔のスペースの表示は避けられません。
> 本質的な問題は、テキストに変換する時の空白の除去の問題ではなく、
> テキストの空白や改行の処理は、英語と日本語では異なり、難しい問題を孕んでいるにも関わらず、
> 強制改行後に、HTMLソースの整形のために、勝手に行頭に複数の半角スペースを挿入するという、余計なことをしていることにあります。
> テキストだと先頭の行に空白が入った問題も、本質的には全く同じです。
>><body>[改行]
>>{連続する半角スペース}メールの最初のテキスト...
> を作るので、テキストに変換したときに、この{連続する半角スペース}が、一つの半角スペースとして残る、という現象になりました。
> この問題の時は、<body>直後から最初の要素までの間の空白は除去する、というような方法で回避したはずです。
> これと同じような方法で(a)に対処しようとすると、日本語+改行+連続する半角スペース+日本語のテキスト、において、
> 日本語+改行+一つの半角スペース+日本語のテキスト、と解釈したあと、改行+一つの半角スペースを除去することになるだろうと思いますが、
> この半角スペースが本当に不要なのかどうかは、一旦挿入されてしまうと、誰にも判別できません。
> 犯人は、強制改行後に、整形のための余計な半角スペースを行頭に勝手に挿入している側です。

HTML 的には連続した WSP はひとつの区切りとしかみなしません。なので、
犯人呼ばわりはどうかと思うのですが。

Thunderbird はどうか知りませんが、Firefox で HTML を表示すると p タグ内の
改行はひとつの空白になります。HTML なんでそういうもんでしょう。
勝手に html->text 変換が原因と考えてるわけですが(私は)、もしそうなら、
html 整形用の半角スペースが無かったとしても、text パートには改行から変換
された半角スペースが入ってしまうのではないかと思います。

>><body>[改行]
>>{連続する半角スペース}メールの最初のテキスト...

という html を Firefox で表示したときも、その部分のスペースは表示されま
せん。そういうもんでしょう。Firefox と同じエンジン使って変換してるんじゃ
ないかと思うんですが、その性じゃないでしょうかね。
内部の実装知らんひとがとやかく言ってもあさっての方向に行くのでこの辺で
口をつぐみましょう>私

> palさん、majiさん、のらねこ さんは、このあたりについて、どう思われますか?
> 必要だという場合、日本語などの場合は行頭に半角スペースを挿入するHTMLの整形を行わないとか、そういったHTMLの整形はオプションで設定できるようにする、とかが必要だと思いますか?

私は Thunderbird ユーザじゃないので聞かないでください。それと HTML メール
などは害悪だと思っているので、テキストで書けば良いじゃないと思うのです。

(環境: WinXP SP3/Other)

のらねこ さんのおかげで、現象に対する理解が、だいぶ進みました。

> html で編集したテキストが html->text 変換で text パートに埋め込まれる
> ので、WSP が入ってしまうって事でしょ?

そうです。
Tb 3.1において、なぜ、HTMLメールの表示ではWSPが除去されて表示されて、html->text変換ではWSPが残るのか、
正しい・正しくない、を言えるとしたら、どちらが正しいのか、
使う側にとってどちらがいいのか、ということだとすると、WSPは残るべきか、残らない方が都合がいいのか、
というようなことになります。

> 要は、1行72バイト以内で改行するようにすれば、良いんじゃないでしょうかね?

なるほど。
テキストのラップは72バイトでHTMLのラップは72文字、を、HTMLのラップを32文字とかに減らしてうまいことバイト数を揃えてやれば、発生したWSPが斜めに綺麗に並んで縞模様、ではなくて、縦に綺麗に並ぶだけだから、問題は見えなくなりますね。

> > 犯人は、強制改行後に、整形のための余計な半角スペースを行頭に勝手に挿入している側です。
> HTML 的には連続した WSP はひとつの区切りとしかみなしません。
> なので、犯人呼ばわりはどうかと思うのですが。

改行は無罪で、{半角スペース}だけが悪さをしている、と思い込んでました。
Thunderbirdが、自動的・強制的に改行を挿入する時は、以下のようなデータを作っています。
> <p>日本語のテキスト1[改行]
> {複数の半角スペース}日本語のテキスト2
これは、テキストコンバーターにとって、結局は、日本語のテキスト1[スペース]日本語のテキスト2、と同値になるわけですね。
自動改行・強制改行の場合は、すでに改行が挿入されているのだから、整形のための半角スペースをいくつ入れようが全く関係ないわけで、濡れ衣でした(^^;
真の下手人は、改行周りはブラウザーで良きに図らえ、のHTMLになるのかな?
HTMLにも、format=flowed,DelSp=Yes/No的な、Del_CRLF=Yes/Noのようなものがあると、このあたりを確実に制御できるのに...

テキストコンバーターには、受信メールと同様に、改行(および整形のためのスペース)が挿入された、text/htmlパートとしてのHTMLデータが渡されていて、その結果、text/plainではスペースが入る、と考えてよさそうに思えます。
Tb 3.1のHTMLモードの表示で、挿入した改行によるスペースが表示されないのは、強制改行によって長い数字列などが二行にわけられてしまった時にそれを戻して表示しようと、Tb 3.1は、HTMLを読み込んで表示する時には改行を無視するようにしているとか、
Composerは、WYSIWYGということで、パラグラフなどでのエンターキーで<BR>を必ず挿入するので、HTMLメールのソース上の[改行]は、<pre>を除いて、常に無視して表示できるし、そのほうが都合がいい、というようなことかも知れません。

現象は、テキストにスペースが入ってはいけないのに入ってしまう、のではなくて、
HTMLメールの作成・表示で、自動改行・強制改行によってスペースが入ることになるのは、HTMLの仕様から言って当然であるが、
Tb 3.1のHTMLモードの表示では、そのスペースをうまいこと隠しているだけ、あるいは、たまたま隠れているだけ、と考えてよさそうです。
そうなると、テキストコンバーター側の「バグ」ではあり得なくなります。
挿入された改行に起因するスペースが、text/plainでは斜めに並んで綺麗な縞模様を作るアスキーアート、という、Tbの隠し機能(^^)

HTMLモードだと、改行なしの超ロングテキストを貼り付けても、テキストモードとは違って、エディター上では自動改行や強制改行が目に見えないし、HTMLモードでの送信されたメールのtext/htmlパートの表示でも同様なので、text/plainパートを表示した時に現れる挿入された改行によるスペースを見てビックリする現象、と言えるかも知れませんね。

(環境: Win 7/Other)
親記事に関連する質問/不具合なので、こちらに投稿させていただきます。
不適切でしたら連絡をお願いいたします。可能ならこの投稿を削除し、別途新規スレッドを作成いたします。

[質問内容]
リンクを埋め込んだhtml形式のメールをThunderbirdから送信すると、メール本文に不要なスペースが挿入されてしまいます。
箇条書きのテキストにリンクを埋め込む場合は<pre>を使っても良いのですが、文章中の一部に埋め込む場合は、埋め込まない他の行とのバランスが崩れてしまうため、他の対処方法を探しています。ご存知の方がいましたらアドバイスをお願いします。

[確認済みのページ]
http://forums.mozillazine.jp/viewtopic.php?t=10416
http://okwave.jp/qa/q5950437.html

[使用環境]
Windows 7 Ultimate Edition SP1 [6.1 Build 7601] (x86)
Thunderbird 3.1.7 / Firefox 3.6.13

[症状など]
テキストにurlリンクを埋め込んだメールを作成すると、意図しないところにスペースが挿入されます。
以下、再現手順を示します。なお、Thunderbirdはすでにシステムにインストールされていて、かつ、起動していないものとします。

1. Thunderbirdのプロファイルをバックアップしてからフォルダ内を空にする
2. Thunderbirdを起動する
3. 自動表示される[メールアカウント設定]で必要なアカウント情報を入力する
4. 自動表示される[システム統合]はキャンセルで次に進む
5. [メッセージ]メニューの[新しいメッセージ]を選ぶ
   新規のメール作成ウィンドウが起動します。
6. メール本文に「送信メールの文中に勝手に半角スペースが入る」と入力する
7. 上記で入力したテキストを選択し、[挿入]メニューの[リンク]を選ぶ
   [リンクのプロパティ]が開きます。
8. [リンクURL]に「http://forum.mozilla.gr.jp/cbbs.cgi?mode=all&namber=53613」と入力して[OK]ボタンを押す
9. このメールをhtml形式で受信可能なメールアドレスに送信し、受信状態を確認する

上記手順により受信したメールについて、冒頭の「送」と「信」の間にスペースが1文字挿入されています。
私は、自動的に挿入されたこのスペースが存在しないことを期待しています。この方法についてご存知の方がいましたら教えてください。
上記のとおり<pre>を指定する方法は知ってしますが、バランスが崩れるので他の方法を探しています。
コード修正やビルドでの対応は私には無理ですが、about:configやレジストリでの方法でしたら私でも対処できると思います。

なお、上記9で送信せず、ローカルにhtml形式として保存したり、下書きフォルダに保存しても、この現象を確認できると思います。
また、この現象は、editor.htmlWrapColumnやmailnews.wraplengthを0に変更しても発生します。
Firefoxを使って直接Gmailにログオンしてメールを作成した場合、同様の現象は発生しません。
私は日本語以外を理解できませんが、Thunderbirdは過去のバージョンにおいて以下の修正を行っているようです。私が挙げているケースはこれに類似するものかもしれません。
https://bugzilla.mozilla.org/show_bug.cgi?id=564737

最後に、ローカルにhtml形式として保存した時のファイルの一部を引用しておきます。「送」の直後に改行があることが分かります。

(ここから)----------------------------------------------------------------------
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.13) Gecko/20101207 Thunderbird/3.1.7
MIME-Version: 1.0
Content-Type: text/html; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-2022-JP">
    <title></title>
  </head>
  <body text="#000000" bgcolor="#ffffff">
    <a
      href="http://forum.mozilla.gr.jp/cbbs.cgi?mode=all&amp;namber=53613">送
      信メールの文中に勝手に半角スペースが入る</a>
  </body>
</html>
(ここまで)----------------------------------------------------------------------

最後まで読んでいただき、ありがとうございました。

(環境: WinXP SP3/Other)

> ローカルにhtml形式として保存した時のファイルの一部を引用しておきます。
>「送」の直後に改行があることが分かります。
> <a
> href="http://forum.mozilla.gr.jp/cbbs.cgi?mode=all&amp;namber=53613">
> 信メールの文中に勝手に半角スペースが入る</a>

メールを実際に送信する必要はなく、「後で送信」、「ドラフトに保存」の後、メッセージのソースを表示するだけで十分です。

> <a[改行]
> href="...">送[改行]
> [整形のための複数のスペース]...</a>
であり、<a href="...">リンクの文字列</a> において、「リンクの文字列」の中に改行が入れば、そこが空白で表示されるのは、当然、になります。
基本的には、「リンクの文字列」部分の長さが非常に長くて、メールにおいては一行の長さに制限があるので「リンクの文字列」の途中に改行が入った、のと、全く同じです。

> また、この現象は、editor.htmlWrapColumnやmailnews.wraplengthを0に変更しても...(以下略)

mailnews.wraplengthは、テキストモードでの作成、text/plainパートに関係するもので、HTMLでの作成、text/htmlパートには関係ありません。

editor.htmlWrapColumnの指定がどうも効かないようで、72文字(unicodeの文字数で)に固定されてしまっているようです。
これが効けば、極端に長いリンクではないですし、この値を大きくして、<a>...</a>の途中、あるいは、「リンクの文字列」の途中に改行が入らないようにできるはずなんですけどね。

一文字目と二文字目の間、という、目立つところに改行による空白が入るので、困りますね。
「リンクの文字列」→「<スペース>...<スペース>リンクの文字列」になるようにして(リの前に?をいれ、?<スペース>...<スペース>リ、にし、?を消す)、
> <a[改行]
> href="...">&nbsp;&nbsp;[改行]
> [整形のための複数のスペース]送信...</a>
になるようにできると、違和感が減るかもしれません。
リンクの文字列の後ろにも<スペース>...<スペース>を入れておくと、もう少し良くなるかも。
> <a[改行]
> href="...">&nbsp;&nbsp;[改行]
> [整形のための複数のスペース]送信...<スペース>...<スペース></a>

整形のためのスペースなどを止め、常に<a>タグの後ろに改行を入れて、リンク文字列を次の行に追いやる、とでもしてくれると、文字と文字の間にスペースが入ることは無くなって、たとえ問題があっても、そんなに見た目が悪くはならないと思うんですけどね。
> <a[改行]
> href ...>[改行]
> リンクの文字列

(環境: WinXP SP3/Other)

追記です。

提示されたテストケースの場合、リンクテキストの前に半角スペースを2つ入れると、ちょうど「送信」の前に改行が入ります。
「送信...」→「?<スペース><スペース>送信...」、「?」をバックスペースで消して、「<スペース><スペース>送信...」にする。
> [整形のための複数のスペース]<a[改行]
> [整形のための複数のスペース]href="...">&nbsp;[改行]
> [整形のための複数のスペース]送信...</a>
「送 信メールの文中に勝手に半角スペースが入る」よりは、
「 送信メールの文中に勝手に半角スペースが入る 」のほうが、まだまし。
HTMLですから、どのメーラーでも同じ表示になるでしょう。

目立つところに半角スペースが入って困る場合は、ドラフトに保存して、表示を確認し、適宜スペースを追加して、気にならないところで改行が入るようにする、くらいしか、現時点で可能な対策はなさそうに思えます。
「送信メールの文中に勝 手に半角スペースが入る」ではなく、
「送信メールの文中に 勝手に半角スペースが入る」とか、
「送信メールの文中に勝手に 半角スペースが入る」のようになるだけでも、
随分読みやすくなると思います。

どうしても気になる場合は、手でHTMLを書き換える、という力技もあります。
(1) ローカルフォルダの「未送信」フォルダで、「フォルダーの最適化」
(2)「後で送信」でローカルフォルダの「未送信」フォルダに保存
(3) メールのcharsetに対応しているテキストエディターで、Unsent Messagesというファイルを編集
(4) 手動でHTMLのソースの改行位置などを変える
(5) 「未送信」フォルダのプロパティで「フォルダを修復」
(6) メールを表示して、問題がなければ「未送信メッセージを送信」
テキストの添付ファイルがあって、そのcharsetがメール本体のcharsetと異なるような場合には、テキストエディターは、普通、一つのファイル内の複数の異なるcharsetには対応していないので、編集するとバイナリーデータを破壊することになって、この力技は使えないですけど。

(環境: Win 7/Other)

返信いただき、ありがとうございます。

> editor.htmlWrapColumnの指定がどうも効かないようで、72文字(unicodeの文字数で)に固定されてしまっているようです。

確信を持てずにいたのですが、やはり上記の実装に原因があるようですね。
3.1.8でも試してみましたが、変化はありませんでした。

> 目立つところに半角スペースが入って困る場合は、ドラフトに保存して、表示を確認し、適宜スペースを追加して、気にならないところで改行が入るようにする、くらいしか、現時点で可能な対策はなさそうに思えます。

詳細な説明をしていただき、ありがとうございました。
遠州白熊さんからメールの作成方法についてせっかく教えていただいたのですが、正直htmlまで意識するのは私にとって荷が重すぎます。
私は、入力したままの状態が相手に伝わることを期待していました。ですが、現状のThunderbirdでは難しいと分かりました。
editor.htmlWrapColumnが名称と一致するように実装されるまでは、ブラウザを使ってメールを作成しようと思います。

何度も回答をいただき、ありがとうございました。


[ 前のトピック内容10件 ]
このトピックの全ページ / [0] [1]

返信不可


- Child Tree -