当通过PHP请求发送邮件时,俄语字母发生了什么?
“硬编码”俄罗斯字母正确显示,但从表格的文本框中带有象形文字:
HTML页面:
Содержание работPHP页面:
$WorkContent = $_REQUEST["workContent"]; //Содержание работ
// ...
$WorkContentLabel = "Содержание работ";
// ...
$message .= $WorkContentLabel . ":\t" . $WorkContent . "\n";
// ...
// email stuff (data below changed)
$to = "test@gmail.com";
$from = "me@domain.com";
$from_header = "From: Russian site command ";
$subject = "Message with russian letters";
$subject = '=?utf-8?B?'.$subject.'?=';
$message .= $subject;
// send message
mail($to, $subject, $message, $from_header);
并提交表格.
我收到什么(在GMAIL中):
Содержание работ: 1)Содержание 2)RABOT
所以,硬编码的俄语文本 – 好的,通过表格发送俄语文本 – NOK,通过ASCII文本格式发送 – 确定.
有人知道编码的奇怪行为可能是什么原因?
编辑:
用过的
$subject = " оборудования - subject with russian letters";
$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
$message .= $subject;
解决方法:
你需要base64_encode()你的$subject,如下所示:
$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
确保您还将编码为UTF-8的.php文件保存为无BOM.
标签:php,ascii,utf-8,character-encoding,internationalization
来源: https://codeday.me/bug/20190715/1472848.html