【发布时间】:2017-03-31 00:41:10
【问题描述】:
我目前正在过度使用我的网站,并希望使用正确的字符编码,因为到目前为止我遇到了一些问题。
我的 HTML 和 PHP 文件是用 UTF8 编码的,我的 HTML 头是这样的:
<!DOCTYPE html><html><head><meta charset="utf-8" />.....
我使用 MySQLi 并像这样配置我的连接:
$DB->set_charset("utf8");
我的数据库正在使用 utf8_general_ci 排序规则。
所以我认为我设置正确。
现在我的问题: 为了避免跨站点脚本,我每次在显示用户保存到我的数据库中的数据时都使用 htmlentities() 来破坏 HTML 字符,例如 " '
echo(htmlentities($str, ENT_QUOTES, "UTF-8"));
但是,当 $str 包含其他特殊字符(例如 ÄäÖöÜü&ßàé)时,它们也会损坏,并且我的浏览器仅显示 & Auml;等等……
我的错在哪里?实现 xss 安全并显示 utf-8 字符的正确方法是什么?我想我可能需要这些主题的完整速成课程。 This solution 不符合我的问题,因为我已经使用了这个参数。
如果您能帮助我解决这个问题,我将不胜感激。 最好的祝福 卢卡斯
【问题讨论】:
-
可能是语言环境问题吗?如果您将 php 进程的语言环境设置为 UTF8,如果它还不是那样的话,该怎么办?
-
您好,谢谢您的回答!你的意思是我的 php.ini 中的 default_charset 设置?我将它设置为“UTF-8”,但它没有任何效果......我不确定 htmlentities 是否适合我link? “所有适用的字符”是什么意思?
标签: php utf-8 character-encoding xss html-entities