データベースの内容を読み取り、それらの内容を電子メール メッセージに出力するための PHP スクリプトをいくつか作成しました。ときどき、スペース (0x20) 文字が出力に埋め込まれているのを目にすることがあります。たとえば、あるスクリプトでは、正確に「n」個の非スペース文字を含む PHP グローバル変数を参照しています。その変数が電子メール メッセージにダンプされると、(常にではありませんが) ときどき、文字列に空白が埋め込まれて表示されます (文字列 "n+1" の全長)。それ以外の場合、HTML タグ (<BR> など) は < BR> として表示されます (「B」の前のスペースに注意してください)。
スクリプトの動作に一貫性がないため (一部の電子メールは影響を受け、他の電子メールは影響を受けない)、問題を見つけることができないようです。
時々 BREAK タグにスペースを埋め込む PHP スクリプトへのリンクを同封します。データベースに特定のログイン情報を提供する行を削除しました。そうでなければ、他のすべては無傷です。以下のリンクにあるコード ファイルの 281 行目には、スペースが埋め込まれた BREAK コマンドが含まれています (上記のとおり)。これは一度だけ起こりました!
http://jem-software.com/temptest.txt
他に関連する可能性がある唯一の情報は、このスクリプト ファイルが、Joomla! ベースのウェブサイト。
編集1:
リカルドさん、ご提案ありがとうございます。ここにいくつかの明確化があります:
データベースに挿入するために、電子メールを読んで結果を解析していません。正反対に、データベースから読み取り、その結果を使用して電子メールを作成しています。データベースをチェックして、使用された文字セットを確認し、文字セットを明示的に渡して、違いがあるかどうかを確認します。
私が参照しているデータベースは Joomla の外部にあるため、Joomla 関数を使用してデータベースにアクセスすることはありません。環境。これは、数年前に作成された PHP スクリプトから作成された既存のデータベースです。私の古いウェブサイトが Joomla を使用して書き直されたとき、PHP データベース アクセス コードをそのまま「移植」したかったので、これを可能にするために JUMI プラグインをインストールしました。
データベースの文字コードを調べて、メールメッセージの文字コードと同期させます。
文字コードの問題により、ハードコードされた HTML タグに SPACE が挿入される仕組みがわかりません。このタグはデータベースからのものではなく、電子メールにリテラル文字列として入力されたものです。