gpt4 book ai didi

php - HTML 净化器有选择地吃掉特殊字符

转载 作者:行者123 更新时间:2023-11-29 17:33:27 24 4
gpt4 key购买 nike

针对符合 UTF-8 标准的数据库使用 PHP。输入的方式如下。

  1. 用户输入文本区域
  2. 使用 javascript escape() 编码的文本区域
  3. 通过 HTTP post 传递
  4. 使用 PHP rawurldecode() 解码
  5. 使用默认设置通过 HTMLPurifier
  6. 转义为MySQL并存储在数据库中

它以通常的方式出现,我在页面加载时运行 unescape()。这是为了让人们可以直接从 word 文档复制和粘贴,并显示智能引号。

但 HTMLPurifier 似乎破坏了非 UTF-8 特殊字符,那些将转义 () 为简单的 % 表达式的字符,例如 Ö,它转义为 %D6,而智能引号转义为 %u2024 或其他字符并进入数据库那样。它会同时删除特殊字符和紧随其后的字符。

我需要在这个过程中改变一些东西。也许我需要更改多项内容。

我该怎么做才能不破坏特殊字符?

最佳答案

  1. textarea encoded with javascript escape()

escape isn't safe for non-ascii. Use escapeURIComponent

  1. passed via HTTP post

我假设您使用 XmlHttpRequest?如果不是,请确保包含表单的页面以 utf-8 格式提供。

  1. decoded with PHP rawurldecode()

如果您通过$_POST 访问该值,您不应该解码它,因为已经完成了。这样做会弄乱数据。

  1. escaped for MySQL and stored in database

确保你没有 magic quotes打开。确保数据库将表存储为 utf-8(编码 排序规则必须都是 utf-8)。确保 php 和 MySql 之间的连接是 utf-8(如果不使用 PDO,请使用 set names utf8)。

最后,再次输出字符串时,请确保页面以utf-8服务。

关于php - HTML 净化器有选择地吃掉特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/864644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com