取消PHP字符串中Unicode字符的标题


Unescaping Unicode chars in PHP strings

如果用户在我的网站上的登录表单中将其密码键入为password§1234,则相应的$_POST变量将包含字符串password''xc2''xa71234。然后对该字符串进行散列处理,并将其与数据库中已有的密码散列进行比较。

这通常不会成为问题,因为这种转义会在注册和登录阶段发生,因此仍然与数据库中的哈希匹配。然而,我的网站允许通过桌面API登录,这个API在哈希之前正确解释字符串,没有转义字符。因此,桌面哈希不匹配,因此用户无法登录。

我知道这个主题有很多线程,但我找不到任何解决我问题的解决方案,这可能与语法是''xc2''xa7而不是U+00A7有关。

当然,最简单的解决方案是在桌面上逃离它,但我宁愿解决这个问题,也不愿让一切都同样不正确。更新服务器也比发送多个应用程序更新更容易。

看起来您可以只使用utf8_encode($password)。此处示例