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