如何获得正确的行为采用HTML净化?
-
22-08-2019 - |
题
我使用 HTML净化器 在我PHP项目和我遇到了麻烦,它的工作适当与用户输入。
我有用户进入HTML使用所见即所得的编辑(命令的),但是只要用户进入的HTML实体
(非破坏性空间)它被保存入数据库作为这个怪异的性格(Â
).
然而,事情是,当我编辑的保存项使用的"所见即所得"编辑,它得到正确显示作为
.它还功能正常的时候显示,只有在将源代码看作为一个真正的空间,而不是该非破空间符。
此外,在该数据库显示作为怪异的性格。
我读医生有关 Unicode和HTML净化器 并改变了我的数据库和网页的编码是UTF-8,但我仍然有问题与该非破空间角色不错位。其他HTML实体,例如 <
和 >
, ,获得作为保存 <
和 >
, 但为什么不
?
解决方案
该非破空间不被保存在数据库作为一个怪异的性格,它被保存为 两个 字符。Unicode的非破坏性空间字符编码UTF-8 0xC2 0xA0
, ,其中ISO-8859-1看起来像"A"(即一个奇怪的外字随后通过不间断的空间)。
你可能是忘记做 SET NAMES 'utf8'
在你的数据库连接,这导致PHP发其数据MySQL as ISO-8859-1(默认)。
看看"UTF-8的所有方式通过..."看看如何适当地设立UTF-8时使用PHP和MySQL。
其他提示
它也可以帮助你知道,  
是一个备选
你可能需要如果你输出任何人可读XML;)
不隶属于 StackOverflow