【发布时间】:2011-01-08 21:18:27
【问题描述】:
当通过 PHP 请求发送到...邮件时,俄罗斯字母会发生什么情况,例如? “硬编码”俄语字母显示正确,但来自带有象形文字的表单文本框:
HTML 页面:
<tr>
<td style="width: 280px">Содержание работ</td>
<td><input type="text" id="workContent"/></td>
</tr>
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);
用户在文本框中输入一些内容: alt text http://lh3.ggpht.com/_1TPOP7DzY1E/S1y6Y0wb9tI/AAAAAAAAC88/OkdMQkO47HQ/s800/works.png
然后提交表单。
我会收到什么(在 GMAIL 中):
Содержание работ: 1)Содержание 2)RABOT
所以,硬编码俄语文本 - 好的,通过表单发送 俄语文本 - NOK,通过表单发送 ASCII 文本 - 好的。
有人知道编码出现这种奇怪行为的原因可能是什么吗?
编辑: 用过
$subject = " оборудования - subject with russian letters";
$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
$message .= $subject;
获得一个主题,如 �����������ÿ - subject with russian letters http://lh6.ggpht.com/_1TPOP7DzY1E/S1zFqFe9ohI/AAAAAAAAC9E/PZ7C4JtEHTU/s800/subject.png
【问题讨论】:
标签: php utf-8 character-encoding internationalization ascii