Вам не обязательно делать это. Вы можете поместить символы не-ASCII Unicode в URL, как байты в кодировке UTF-8. Итак:
http://en.wikipedia.org/wiki/%C3%86
отображается в браузерах как:
http://en.wikipedia.org/wiki/Æ
и любой из них может быть вставлен в адресную строку.
Пробел и косая черта могут быть закодированы как% 20 и% 2F. Тем не менее, эти формы все еще отображаются в браузере как проценты, потому что они являются зарезервированными символами. Так что они выглядят не так красиво. Существует дополнительная проблема с% 2F в том, что традиционные среды сценариев, основанные на CGI, не могут их читать, и Apache по умолчанию намеренно блокирует их, чтобы не допустить путаницы таких сценариев и создания дыр в безопасности.
Поэтому я делаю титульные слагы, полностью удаляя:
# % ' ( ) ? [ ] (U+00AD soft hyphen)
вместе с любыми управляющими символами (от U + 0000 до U + 001F, кроме U + 00A0 и от U + 007F до U + 00BF). Затем заменить любой прогон:
" $ & * + , / : ; < = > @ \ ^ (U+0020 space) (U+000A newline)
с одним подчеркиванием. Это устраняет необходимость появления последовательности% xx в URL. (Для символов Юникода все еще будут последовательности% xx, но пользователь их не увидит.)
Вы можете использовать дефис вместо подчеркивания, если хотите, в зависимости от того, что красивее. Поисковые системы должны быть в порядке с любым.
eta re comment другой ответ:
Потому что я использую php для поиска имени в моей базе данных. Таким образом, каждый символ должен быть преобразован обратно в исходный, иначе совпадение не будет найдено.
В этом случае вы не можете сделать что-то невосстановимое для персонажей. Вы не можете изменить ‘Æ’ на «ae», пробелы должны быть закодированы как «% 20», а косая черта - «% 2F». Это приведет к несколько уродливым URL-адресам, а «% 2F» вызовет проблемы с развертыванием в Apache и IIS.
Если вам нужно ввести только заголовок, вам нужно добавить столбец (UNIQUE indexed) в обработанный фрагмент, чтобы посмотреть, как предложено выше. Однако обратите внимание, что тогда вы не сможете переименовать / исправить заголовок страницы, так как это изменит слаг, нарушая URL.
Обычный подход к решению этой проблемы заключается в добавлении числового идентификатора в дополнение к слагу (см., Например, как это делает SO). Вы также можете 301-перенаправить, где имя слага не подходит для оптимального SEO.