解决url中不能不能编译中文或隐藏敏感信息的问题。ruby使用URI.escape方法 js中使用encode()
有的浏览器不能自动识别url中参数的中文,会出现报错。所以要把参数的中文元素,或者敏感信息进行编译。
require 'uri' #一般rails项目会自带。 JavaScript自带 escape方法,可以直接 escape(string)使用。
enc_uri = URI.escape("http://example.com/?a=\11\15")
p enc_uri
# => "http://example.com/?a=%09%0D"
irb(main):004:0> enc_uri = URI.escape("http://example.com/?a=我爱你")
=> "http://example.com/?a=%E6%88%91%E7%88%B1%E4%BD%A0"
反编译:
irb(main):009:0> enc_uri = URI.unescape("http://example.com/?a=%E6%88%91%E7%88%B1%E4%BD%A0")
=> "http://example.com/?a=我爱你"
js中使用encodeURI() 和 decodeURI()方法: (该方法和 ruby 的方法互相 编译。)
mark = "123范德萨"
encodeURI(mark)
"123%E8%8C%83%E5%BE%B7%E8%90%A8"
decodeURI("123%E8%8C%83%E5%BE%B7%E8%90%A8")
"123范德萨"
encodeURIComponent(uri) 和 encodeURI(uri) 的区别
var uri = "https://w3schools.com/my test.asp?name=文章"
undefined
uri
"https://w3schools.com/my test.asp?name=文章"
res = encodeURIComponent(uri)
"https%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3D%E6%96%87%E7%AB%A0"
a = encodeURI(uri)
"https://w3schools.com/my%20test.asp?name=%E6%96%87%E7%AB%A0"