【问题标题】:Best way to encode special chars in url在 url 中编码特殊字符的最佳方法
【发布时间】:2013-10-19 10:07:10
【问题描述】:

在 url 中编码特殊字符的最佳方法是什么?假设我以这种方式将一个变量从 javascript 传递给 php 脚本:

http://example.com/my sp3c!al var!a$le

对特殊字符(如空格、!、$、/、\ 等)进行编码的最佳方法是什么? javascript中是否有一种方法可以使用php中的相应函数对其进行编码以在那里对其进行解码?

【问题讨论】:

    标签: javascript php url encode


    【解决方案1】:

    你需要使用encodeURIComponent(yourvar);

    【讨论】:

    • 这在我的情况下并不完全有效。请参阅上面的示例网址。我使用域后面的部分将其与 htaccess 规则一起传输到查询参数。但是,如果“我的特殊变量”包含斜杠,则该斜杠确实会转换为 %2F 但会导致问题,因为浏览器在调用该 url 时会看到斜杠是一个特殊的字符。 (如example.com/myspecial/variable)如何防止这种情况发生?
    【解决方案2】:

    你可以通过三种方式做到这一点

    encodeURI(yourvar) 输出http://example.com/my%20sp3c!al%20var!a$le

    amd

    encodeURIComponent(yourvar)

    输出http%3A%2F%2Fexample.com%2Fmy%20sp3c!al%20var!a%24le

    转义()

    输出http%3A//example.com/my%20sp3c%21al%20var%21a%24le

    不推荐使用转义,因为它自 ECMAScript v3 以来已被弃用。

    functions 用于 JavaScript 转义,而不是 HTTP。

    【讨论】:

    • 但是如果“我的特殊变量”部分包含斜线怎么办?它被编码为 %2F 但在调用 url 时会导致问题,因为浏览器想要打开 example.com/myspecial/variable 而不是传输“myspecial/variable”。我怎样才能防止这种情况发生?
    • 所以解决这个问题的唯一方法是将“/”之类的字符替换为其他字符,例如一个“,”这样浏览器就正确地调用了这个url,对吧?这似乎是一个肮脏的修复..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 2023-04-10
    • 2014-03-31
    • 1970-01-01
    相关资源
    最近更新 更多