You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP表单邮件接收西里尔字符乱码,寻求代码修改解决方法

解决PHP表单俄文(西里尔字符)邮件乱码问题

你猜的完全没错,这个乱码问题就是UTF-8编码配置缺失导致的。咱们针对你用的这款PHP表单代码,一步步修改就能解决:

1. 确保表单页面的编码基础

先确认你的HTML表单页面已经设置了UTF-8编码,在<head>标签里加上:

<meta charset="UTF-8">

这能保证用户输入的俄文数据以UTF-8格式提交到服务器。

2. 配置PHP脚本的编码环境

在处理表单的PHP脚本最开头,添加以下代码,强制PHP使用UTF-8处理所有字符:

// 设置内部字符编码为UTF-8
mb_internal_encoding('UTF-8');
// 输出内容的编码也设为UTF-8
header('Content-Type: text/html; charset=UTF-8');

3. 修改邮件头(最关键的一步)

邮件乱码的核心原因是邮件没有声明UTF-8编码。找到代码中设置$headers的部分,替换成以下内容:

$headers = "From: $email\r\n";
$headers .= "Reply-To: $email\r\n";
// 指定邮件内容为纯文本,编码为UTF-8
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
// 启用8位传输编码,支持西里尔字符
$headers .= "Content-Transfer-Encoding: 8bit\r\n";

4. 处理邮件主题的编码

如果邮件主题里也可能出现俄文(或者你想确保主题的兼容性),用mb_encode_mimeheader函数对主题进行编码:

// 把"表单提交"替换成你实际的邮件主题
$subject = mb_encode_mimeheader('表单提交内容', 'UTF-8', 'B');

这里的B表示用Base64编码主题,能完美支持非ASCII字符。

5. 验证邮件发送函数

确保调用mail()函数时正确传递了修改后的$headers参数,比如:

mail($to, $subject, $message, $headers);

做完这些修改后,俄罗斯用户提交的西里尔字符就能在邮件里正确显示了——从用户输入、服务器处理到邮件发送,全链路都统一用UTF-8编码,乱码自然就消失啦。

内容的提问来源于stack exchange,提问作者Mosaic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:19:24