【发布时间】:2010-07-13 13:01:43
【问题描述】:
所以,我遇到了 PHP 的 rawurlencode 函数的问题。我们网络应用程序中的所有文本字段在被网络服务器处理之前当然都经过转换,我们为此使用了 rawurlencode。这几乎适用于我发现的每个字符,除了“£”符号。现在,我们的用户没有理由输入井号,但他们可能会,所以我想解决这个问题。
问题在于 rawurlencode 不会将网页上输入的井号编码为 %A3,而是编码为 %C2%A3。更糟糕的是,如果用户未能输入另一位关键信息(这会导致网页刷新 - 检查在后端完成 - 并尝试使用用户使用过的信息重新填写表单框),那么当%C2 通过 rawurldecode/encode 运行,它变成 Ã? - 又名,%C3?。当然,“£”也变成了另一个£!
那么,是什么原因造成的呢?我认为这是一个字符编码问题,但我对这些事情并不了解。我在某处听说我可以手动将 £s 编码为 £,但是当数据库可以处理“£”并且磅符号有百分比编码时,我为什么需要这样做?这是 rawurlencode 的 bug,还是字符集不同导致的 bug?
感谢您的帮助。
【问题讨论】: