我使用 HTML净化器 在我PHP项目和我遇到了麻烦,它的工作适当与用户输入。

我有用户进入HTML使用所见即所得的编辑(命令的),但是只要用户进入的HTML实体   (非破坏性空间)它被保存入数据库作为这个怪异的性格(Â).

然而,事情是,当我编辑的保存项使用的"所见即所得"编辑,它得到正确显示作为  .它还功能正常的时候显示,只有在将源代码看作为一个真正的空间,而不是该非破空间符。

此外,在该数据库显示作为怪异的性格。

我读医生有关 Unicode和HTML净化器 并改变了我的数据库和网页的编码是UTF-8,但我仍然有问题与该非破空间角色不错位。其他HTML实体,例如 &lt;&gt;, ,获得作为保存 <>, 但为什么不 &nbsp;?

有帮助吗?

解决方案

该非破空间不被保存在数据库作为一个怪异的性格,它被保存为 两个 字符。Unicode的非破坏性空间字符编码UTF-8 0xC2 0xA0, ,其中ISO-8859-1看起来像"A"(即一个奇怪的外字随后通过不间断的空间)。

你可能是忘记做 SET NAMES 'utf8' 在你的数据库连接,这导致PHP发其数据MySQL as ISO-8859-1(默认)。

看看"UTF-8的所有方式通过..."看看如何适当地设立UTF-8时使用PHP和MySQL。

其他提示

它也可以帮助你知道, &#160; 是一个备选 &nbsp; 你可能需要如果你输出任何人可读XML;)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top