我正在研究如何处理页面集字符集之外的字符。浏览器/ PHP如何处理设置字符集外的字符?
在这种情况下,页面被设置为iso-8859-1,并且前面的程序员决定使用htmlentities($ string,ENT_COMPAT)转义输入。然后将其存储到Mysql的Latin1表中。
由于表设置为与页面相同的字符集,我想知道是否需要该步骤。 我在http://floris.workingweb.nl/experiments/characters.php上做了一些实验,看起来对于拉丁文1里面的东西来说,有些字符是逃脱的,但是例如有一个捷克名字他们没有。
这是因为那些字符在Latin1之外?如果是这样,那么可以删除这些特性,因为它对拉丁文1以外的内容无帮助,并且对于拉丁文内部1,现在我不能看到它了......
谢谢,这就是我一直在寻找的东西。至于其他评论,我知道utf-8,但这是为了以后,现在我需要解决手头上摆脱数据库中逃脱的东西的问题,我需要知道我是否在正确的轨道上 – Maarten 2010-03-30 14:00:35
是的,数据库中的HTML编码数据是一种巨大的代码异味。在将文本放入HTML页面时应该调用htmlspecialchars,而不是与数据层有关。摆脱! – bobince 2010-03-30 14:05:17
@Maarten:不要忘记您的数据仍然需要转义(请参阅答案更新)。为安全起见,应使用htmlspecialchars代替 – user187291 2010-03-30 14:19:35