0
StringBuffer messageText = new StringBuffer();
messageText.append("<style type=\"text/css\">" +
                    "#message p {some style }" +
                    "</style>");
messageText.append("<p>");
(L1)messageText.append("abc’s email level…def");            
messageText.append("</p>");
message.setContent(messageText.toString(), "text/html;");
Transport.send(message);

コードを実行すると、出力の 2 つの異なるバリエーションが見つかりました。

最初にこのメッセージabc’s email level…defを Microsoft Word に入力し、次にこれを Eclipse エディターにコピーしました。プログラムを実行すると、メールにあったメッセージは次のように異なりますabc?s email level?def

しかしabc’s email level…def、Eclipse エディターでこのメッセージを入力すると、同じメッセージが電子メールに表示されます。

Microsoft Word から何かをコピーしても、メールで同じメッセージを受信するには、コードで何を変更すればよいでしょうか...

4

1 に答える 1

0

これはほぼ確実に、エディタ (この場合は MS-Word と Eclipse) とプログラムの間のエンコーディングの問題です。MS-Word から Eclipse にコピー アンド ペーストするコンテンツの両側が UTF-8 であることを確認する必要がありますが、そうではないと思われます。

コメンターは、この問題が Microsoft のスマート クォートの問題であり、通常は正しく貼り付けられないことは正しいです。正規表現を記述してそれらを置き換えることができます。ただし、これはこれらの特定の文字に対する特定の回避策であり、一般的なケースは処理しません。

根本的な原因は、ほぼ確実に、MS-Word から貼り付けているものと Java コードが期待するものとの間のエンコーディングの不一致です。Eclipse の設定をチェックして、デフォルトとして UTF-8 を使用していることを確認し、Word の設定をチェックして、ソース ドキュメントも UTF-8 であることを確認できます。

于 2013-03-19T15:55:08.890 に答える