HTML 中的字符集来自(at-sign),尽管有 utf-8 标头和接受字符集


Charset in HTML from (at-sign) despite of utf-8 header and accept-charset

使用电子邮件登录,我发现HTML表单的字符集(可能)存在问题...

在文档的最顶部,我将php用于:

header('Content-type: text/html; charset=utf-8');

在标题部分,我还有:

<meta charset="UTF-8">

甚至在形式本身:

<form accept-charset="utf-8" ...>


但是,在序列化表单时,将返回电子邮件地址,如下所示:

email=my%40email.com

有人知道为什么吗?

是的,CoursesWeb是对的。使用 urldecode($_POST['email']);,它将自动解码包含所有%##的字符串。

从 php.net:

字符串 urldecode ( 字符串 $str ) 解码给定中的任何 %## 编码 字符串。加号("+")被解码为空格字符。

(php.net/manual/en/function.urldecode.php)

我认为

问题出在 PHP 脚本中过滤表单数据的某些代码上。