0

これがあまり具体的な質問ではないことを願っています...どんな考えでも大歓迎です。

誰かがコンタクト フォーム (UTF-8 エンコード) に記入すると、データは MySQL データベースに正しく入力され (全体で UTF-8 エンコード)、フォームに記入した人に返信メールが送信されます (これも UTF-8 エンコード)。

データが英語で入力されていれば、すべて問題ありません。データが日本語で入力されている場合、文字はデータベースで正しくレンダリングされ、返信メール (データベースから姓と名を取得し、完全に日本語で書かれている) も正しくレンダリングされます。大丈夫ですよね?

ただし、通常は漢字を正しく表示するアドレスに送信した場合でも、返信メールが文字化けとして表示されることがあります。

エラーを再現することはできませんでしたが、クライアントが返信メールのスクリーンショットを送信したため、エラーが発生したことはわかっています。他の誰かがこの問題に遭遇しましたか? 私は少し途方に暮れています。メールの送信にはSendmailというソフトを使っています。

ありがとう

4

1 に答える 1

1

日本語が含まれているかどうかを検出し、含まれている場合は、通常の日本語エンコードを使用して送信してください。中国語の文字を使用する他のすべての言語でこれを行う必要があります-そしておそらくロシア語などでも.これは本当に苦痛です..

function isKanji($str) {
     return preg_match('/[\x{4E00}-\x{9FBF}]/u', $str) > 0;
}

function isHiragana($str) {
    return preg_match('/[\x{3040}-\x{309F}]/u', $str) > 0;
}

function isKatakana($str) {
    return preg_match('/[\x{30A0}-\x{30FF}]/u', $str) > 0;
}

function isJapanese($str) {
    return $this->isKanji($str) || $this->isHiragana($str) || $this->isKatakana($str);
}

$userinputtext = "日本語を認識したいです!";

if (isJapanese($userinputtext)){

   mb_language("ja");
   $subject = mb_encode_mimeheader($subject,"ISO-2022-JP-MS");
   $body = mb_convert_encoding($body,"ISO-2022-JP-MS");
   $mail->CharSet = 'ISO-2022-JP';
   $mail->Encoding = "7bit";

   }
于 2014-01-25T01:11:12.253 に答える