url编码短划线和下划线

时间:2011-05-19 20:08:31

标签: language-agnostic url-encoding

我正在尝试为Ajax网站推荐一个人类可读的URL结构。我喜欢使用短划线或下划线来表示多个单词。

例如:http://www.mysite/Kent-Smith/

挑战在于我们在系统中有一堆多个单词关键字,我们通过URL过滤可能有短划线或下划线。 (我想我们系统中的一些金融代码确实使用了下划线)。

我是否坚持解码方面的事情?我必须使用%20吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为你会做的是:

  1. 有一个指定的“转义”字符 - \(反斜杠)对于此
  2. 是常见的
  3. 进行编码时,首先将所有\替换为\\,然后将所有-替换为\-,然后将所有空格替换为破折号。 (这里的顺序很重要!)
  4. 解码时,首先将所有前面带有\的短划线替换为空格,然后将所有\-替换为-,然后将所有\\替换为\
  5. 例如:说你的名字是Jo\hn Smith-Jones(我知道某人不可能在他们的名字中间加上反斜杠,但是......)

    然后您编码:将\替换为\\Jo\\hn Smith-Jones

    现在将-替换为\-Jo\\hn Smith\-Jones

    现在用破折号替换空格:Joh\\n-Smith\-Jones(最终结果)

    这确实会在编码结果的中间产生奇怪的反斜杠,但只有在首先出现标点时才会这样,所以这种情况相对不常见。

    等等,还有一件我想到的事情。反斜杠可能不适用于URL,因此可能使用不同的字符 - 进程仍然完全相同,只需用其他任何内容替换反斜杠。

    快乐黑客!

答案 1 :(得分:0)

我建议你使用空格,在URL中将它们编码为+,并保留连字符:

  

http://example.com/John+Smith-Jones/