メッセージの途中で文字化けが発生する原因


メッセージ全体や日本語文字のみが文字化けするという場合、メッセージの文字コードが原因として考えられますが、メッセージの途中で突然文字化けが発生したり、一部のみが文字化けするという場合、単なる文字コードの問題ではない可能性があります。

このような場合に最も可能性が高いのは、「予期しない文字列の折り返し」です。
日本語メッセージの文字コードとして一般的に使用される ISO-2022-JP というコードでは、日本語文字の開始と終了に 3 バイトからなるエスケープシーケンスが入り、日本語の文字が ASCII キャラクタで表されます。
例えば、「日本語」という文字は、

{ESC}$BF|K\8l{ESC}(B

という文字列になります。({ESC} はキャラクタ コード 27 のコントロール キャラクタです。)

ところが、この文字列を正しく認識しないメールソフトが文字列の途中で改行を入れてしまうと、不正な状態となり、一部の文字が化けるという現象が発生します。

特にこの問題が顕著に発生するのは、Exchange 2000/2003 サーバーを使っている環境から HTML メールを送信した場合です。
Exchange 2000/2003 サーバーでは、日本語の HTML メールは自動的に折り返しが行われないため、一行の長さが 1000 バイトを超えることも少なくありません。しかし、メールの送信で使われる SMTP というプロトコルでは、一行の長さが改行を含んで 1000 バイトという制限があるので、受信側のメールサーバーやゲートウェイによっては、このような長い行を自動的に改行する場合があります。
その時、日本語文字列の途中で改行されてしまうと、文字化けが発生するのです。

この問題については、修正プログラムがリリースされていますが、修正プログラムの適用後にレジストリ設定が必要となります。詳細については以下のリンクを参照してください。
Exchange 2000: http://support.microsoft.com/kb/830409/ja
Exchange 2003: http://support.microsoft.com/kb/885419/ja

また、Exchange 環境以外でも、折り返しを長めに設定したり、折り返さない設定をしているメールクライアントから送信したメールが、途中のメールサーバーなどで自動折り返しされることで文字化けが発生するという可能性もあります。
折り返しの設定によって受信側でメールが読みづらくなるため、長めに設定していたり、折り返さない設定をしていたりする場合もあるかもしれませんが、部分的な文字化けが発生した場合には、折り返しを有効にしたり、適当なタイミングで改行を入れたりすることで回避できると考えられます。

広告

メッセージの途中で文字化けが発生する原因」への2件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中