URL расшифровывает тире и подчеркивание - PullRequest
0 голосов
/ 20 мая 2011

Я пытаюсь порекомендовать удобочитаемую структуру URL для сайта Ajax. Я хотел бы использовать тире или подчеркивание для представления нескольких слов.

Так, например: http://www.mysite/Kent-Smith/

Проблема в том, что в системе есть несколько ключевых слов, которые мы фильтруем по URL, которые могут иметь либо тире, либо подчеркивание. (Я полагаю, некоторые финансовые тикеры в нашей системе используют подчеркивания).

Я застрял на стороне декодирования вещей? Нужно ли использовать% 20?

спасибо!

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

Я предлагаю вам использовать пробелы, кодируя их как + в URL и оставляя дефисы без изменений:

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

0 голосов
/ 08 июня 2011

Я думаю, вы должны сделать следующее:

  1. иметь обозначенный "escape" символ - \ (обратная косая черта) является общим для этого
  2. При кодировании сначала заменитьвсе \ с \\ и затем все - с \-, а затем все пробелы с тире.(порядок важен здесь!)
  3. При декодировании сначала замените все черточки, которым не предшествует \, пробелом, затем все \- на -, затем все \\ на \.

Например: скажите, что вас зовут Jo\hn Smith-Jones (я знаю, что маловероятно, чтобы кто-то имел косую черту в середине своего имени, но ...)

Затем вы кодируете: замените \ на \\: Jo\\hn Smith-Jones

Теперь замените - на \-: Jo\\hn Smith\-Jones

Теперь замените пробелы тире: Joh\\n-Smith\-Jones(конечный результат)

Это приводит к странным обратным слешам в середине закодированных результатов, но только в том случае, если во-первых была пунктуация, так что это было бы относительно редко.

Подождите,еще одна вещь, о которой я только что подумал.Обратная косая черта может не работать для URL, поэтому, возможно, используйте другой символ - процесс все равно будет таким же, просто замените обратную косую черту на что-либо еще.

Счастливого взлома!

...