2012-02-23 1506 views
1

当我使用escape/encodeURI/encodeURIComponent来编码URI时,它编码特殊字符(如“?[] &”),并且所有非ASCII字符。编码URI(空格等),不编码非ASCII字符

我喜欢的链接看起来像:

http:/site.com/?tm=ДОБРОЕ**%20**УТРО 

代替:

http:/site.com/?tm=%u0414%u041E%u0411%u0420%u041E%u0415**%20**%u0423%u0422%u0420%u041E 

我的问题:

  1. 是否有任何需要编码非ASCII?
  2. 是否有任何函数只能编码特殊字符? (不含非ASCII)
+0

不要使用'escape'编码百分比编码。首选'encodeURIComponent'。这样你的URI将是['http://example.com/?tm=%D0%94%D0%9E%D0%91%D0%A0%D0%9E%D0%95**%20**% D0%A3%D0%A2%D0%A0%D0%9E'](http://example.com/?tm=%D0%94%D0%9E%D0%91%D0%A0%D0%9E% D0%95 **%20 **%D0%A3%D0%A2%D0%A0%D0%9E)并且大多数浏览器将在地址栏和href工具提示中正确显示unicode字符。 (SO可能会编码自己的一些字符.. https://jsfiddle.net/bro8Lhza/) – Kaiido 2017-07-22 05:27:31

回答