我已经尝试了很多功能,但我就是想不通。无论如何,正确的方法。
在一个叫做描述的表单字段中,我可以期待各种字符。在将它们提交给数据库之前,需要将它们格式化为 HTML 实体。
现在,我的代码:
$formdesc = htmlentities($_POST['formdesc'], ENT_QUOTES);
对于 MySQL 查询,我只是添加了一个“安全”函数来将字符串中的 ' 斜杠掉:
mysql_real_escape_string($formdesc);
但是,这有时不起作用。例如,“é”变成了 É 而不是 é。
这必须有一个正常的功能。有谁知道我的意思吗?
最佳答案
您需要为 htmlentities
function 指定编码(此处为 UTF-8):
$formdesc = htmlentities($_POST['formdesc'], ENT_QUOTES, 'UTF-8');
否则默认值ISO-8859-1
使用了字符 é
在您以 UTF-8 编码的示例中, 0xC3A9 将被解释为两个字符( Ã
和 ©
)。
但是为什么要用htmlentities
反正?如果您只想转义 HTML 特殊字符,如 &
, <
, >
, "
和 '
htmlspecialchars
就足够了。
关于php - PHP中特殊字符的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062181/