我希望这不是一个太具体的问题。任何想法都是值得感谢的。
当有人填写我的联系人表单(UTF-8编码)时,数据会正确地进入MySQL数据库(始终使用UTF-8编码),并向填写表单(也是UTF-8编码)的人发送一封回复电子邮件。
如果数据是用英语输入的,那么一切都很好。如果数据是用日语输入的,字符将在数据库中正确呈现,回复电子邮件(从数据库中获取其姓氏和名字,也完全是用日语编写的)也会正确呈现。都很好,对吧?
但有时,回复电子邮件会将字符呈现为Mojibake,即使发送到通常正确呈现汉字字符的地址也是如此。
我一直无法复制这个错误,但我知道它已经发生,因为我的客户已经发送了回复电子邮件的屏幕截图。有没有其他人遇到过这个问题?我有点不知所措。我使用Sendmail软件发送电子邮件。
谢谢
发布于 2014-01-25 09:11:12
尝试检测它是否有日语,如果有,使用典型的日语编码发送它。对于所有其他使用中文字符的语言,你都必须这样做--甚至可能是俄语,等等。
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";
}https://stackoverflow.com/questions/19172392
复制相似问题