ser*_*hio 3 php ascii utf-8 internationalization character-encoding
当通过PHP请求发送邮件时,俄语字母发生了什么?"硬编码"俄罗斯字母正确显示,但从表格的文本框中带有象形文字:
HTML页面:
<tr>
<td style="width: 280px">?????????? ?????</td>
<td><input type="text" id="workContent"/></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
用户在文本框中输入一些内容: alt text http://lh3.ggpht.com/_1TPOP7DzY1E/S1y6Y0wb9tI/AAAAAAAAC88/OkdMQkO47HQ/s800/works.png
并提交表格.
我收到什么(在GMAIL中):
?????????? ?????: 1)???????µ???¶?°?????µ 2)RABOT
Run Code Online (Sandbox Code Playgroud)
所以,硬编码的俄语文本 - 好的,通过表格发送俄语文本 - NOK,通过ASCII文本格式发送- 确定.
有人知道编码的奇怪行为可能是什么原因?
编辑:使用
$subject = " ???????????? - subject with russian letters";
$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
$message .= $subject;
Run Code Online (Sandbox Code Playgroud)
获得像 ÿ这样的主题- 俄语字母http://lh6.ggpht.com/_1TPOP7DzY1E/S1zFqFe9ohI/AAAAAAAAC9E/PZ7C4JtEHTU/s800/subject.png
你需要base64_encode()你的$subject,像这样:
$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
Run Code Online (Sandbox Code Playgroud)
确保您还将.php编码为UTF-8的文件保存为无BOM.
这个问题也可能让您感兴趣:这是用PHP发送电子邮件的正确方法吗?
| 归档时间: |
|
| 查看次数: |
8968 次 |
| 最近记录: |