Как я должен дезинфицировать URL-адреса, чтобы люди не помещали в них 漢字, á или другие вещи? - PullRequest
2 голосов
/ 21 января 2010

Как мне дезинфицировать URL, чтобы люди не помещали в них 漢字 или другие вещи?

РЕДАКТИРОВАТЬ: я использую Java. URL будет сгенерирован из вопроса, который пользователь задает в форме. Кажется, StackOverflow только что удалил оскорбительные символы, но он также превращает á в a.

Существует ли стандартное соглашение для этого? Или каждый разработчик просто пишет свою версию?

Ответы [ 3 ]

1 голос
/ 21 января 2010

Процесс, который вы описываете, slugify. Там нет фиксированного механизма для этого; каждый фреймворк обрабатывает его по-своему.

1 голос
/ 21 января 2010

Да, я бы продезинфицировать / удалить. Он будет либо непоследовательным, либо выглядеть ужасно закодированным

Использование Java см. Документация по API URLEncoder

Будь осторожен! Если вы удаляете такие элементы, как нечетные символы, тогда два разных ввода могут выдавать один и тот же раздетый URL, если они не имеют значения.

Спецификация для URL (RFC 1738, Dec. '94) создает проблему, поскольку ограничивает использование разрешенных символов в URL только ограниченным подмножеством набора символов US-ASCII

Это означает, что он будет закодирован. URL должны быть читабельными. Стандарты имеют тенденцию быть предвзятыми по отношению к английскому языку (что это? Лангист? Лангджист?).

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

Если ссылка не отображается должным образом, кодируется браузером и декодируется на другом конце ... но вы хотите пойти на такой риск?

StackOverflow , кажется, просто удаляет эти символы из URL вместе:)

StackOverflow может позволить себе удалить символы, потому что он включает в себя идентификатор вопроса в URL. Слизняк содержащий заголовок вопроса для удобство, и на самом деле не используется на сайте AFAIK. Например, вы можете удалить слизняк и ссылка будет по-прежнему работает нормально: идентификатор вопроса что важно и простой механизм для создания уникальных ссылок, даже если два разные названия вопросов генерируют тот же слизень На самом деле, вы можете проверить это, пытаясь перейти к stackoverflow.com / вопросы / 2106942 / ... и это просто вернет вас к этому стр.

Спасибо Майк Спросс

0 голосов
/ 21 января 2010

На каком языке вы говорите? В PHP я думаю, что это самый простой и позаботится обо всем:

http://us2.php.net/manual/en/function.urlencode.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...