Gla*_*ius 2 javascript php htmlpurifier
对符合UTF-8的数据库使用PHP.这是输入的输入方式.
它以通常的方式出现,我在页面加载时运行unescape().这是为了让人们直接从word文档中复制和粘贴,并显示智能引号.
但HTMLPurifier似乎正在破坏非UTF-8特殊字符,那些逃逸()到一个简单的%表达式,比如Ö,它逃脱到%D6,而smartquotes逃到%u2024或其他东西,然后以这种方式进入数据库.它取出了特殊字符和紧随其后的字符.
我需要在这个过程中改变一些东西.也许我需要改变多件事.
我怎么办才能得不到特殊字符?
- 使用javascript escape()编码的textarea
escape非ascii是不安全的.使用escapeURIComponent
- 通过HTTP帖子传递
我假设你使用XmlHttpRequest?如果没有,请确保包含表单的页面作为utf-8提供.
- 用PHP rawurldecode()解码
如果您访问该值$_POST,则不应对其进行解码,因为已经完成了.这样做会弄乱数据.
- 转义为MySQL并存储在数据库中
确保您没有magic quotes开启.确保数据库将表存储为utf-8(编码和排序规则必须都是utf-8).确保php和MySql之间的连接是utf-8(set names utf8如果不使用PDO,请使用).
最后,确保在再次输出字符串时将页面作为utf-8提供.