我正在使用CKEditor获得WYSIWYG体验,并且我已经启用了在其中创建URL的功能。
表单提交后,我在将数据保存到数据库之前使用此代码:
$description = htmlentities($_POST['description'], ENT_QUOTES, "UTF-8", false);
当我查看数据库时,我可以看到数据保存如下:
<a href="http://google.com"><em>Google</em></a></p>
对我来说,似乎是正确的,编码没有问题?除非我当然错了,我正在做一些我不应该做的事情。
现在,当我在网页中显示数据时,我得到了奇怪的结果。我在显示数据时做了两种方法,每种方法都解决了一个问题,但却产生了一个新问题。为了说明,请看看我的两种方法:
由于我在保存到数据库之前使用ENT_QUOTES
对其进行了编码,因此我使用相同的方法对其进行解码是有意义的。
html_entity_decode($data['description'], ENT_QUOTES, "UTF-8");
我用这种方法得到的问题是带有重音符号(ñå
)的字符无法正确显示。但这解决了我的问题,URL被附加到我的工作目录。
html_entity_decode(utf8_decode($data['description']), ENT_XML1, "UTF-8");
这个修复了重音字符的问题,但它打破了网址,而不是正确打开它尝试打开http://example.com/my/working/directory/%22http://google.com%22
之类的内容。
请注意,我对字符编码的概念并不熟悉,所以如果我做了一些不应该做的事情,请不要苛刻。
答案 0 :(得分:0)
我能够通过组合两种解决方案来解决问题:
html_entity_decode(utf8_decode($data['description']), ENT_QUOTES | ENT_XML1, "UTF-8");