2013-07-05 2 views
-4

Есть ли какой-нибудь алгоритм в C# для кодирования url с символами, которые могут корректировать отображение в веб-браузере?Алгоритм для кода URL

что-то вроде Base64.

+0

Я ищу другие algrithms, base64, я уже использую :) – user2554476

+1

Я набрал «C# url encode» в поисковой системе, и первый результат отвечает на ваш вопрос. Пожалуйста, покажите немного больше усилий в своих вопросах. –

+0

Добро пожаловать! Существует несколько методов, каждый из которых имеет малое поведение. Они подробно обсуждались в других вопросах: http://stackoverflow.com/a/11236038/1344760 – RichardTowers

ответ

0

Стандарт (RFC 3986 aka STD 66) предлагает его для вас. В частности, § 2 и 2.1:

2. Символы

Синтаксис URI обеспечивает способ кодирования данных, предположительно для ради идентификации ресурса, как последовательность символов. Символы URI , в свою очередь, часто кодируются как октеты для транспорта или презентации. В этой спецификации не указывается какая-либо конкретная кодировка символов для сопоставления между символами URI и октетами , используемыми для хранения или передачи этих символов. Когда URI появляется в элементе протокола , кодировка символов определяется этим протоколом; без такого определения предполагается, что URI в том же кодировке символов является окружающим текстом.

Обозначение ABNF определяет его конечные значения неотрицательными целыми числами (кодовыми точками) на основе кодированного US-ASCII набора символов [ASCII]. Поскольку URI представляет собой последовательность символов, мы должны инвертировать это отношение, чтобы понять синтаксис URI. Следовательно, целые значения , используемые ABNF, должны быть сопоставлены с соответствующими символами через US-ASCII, чтобы выполнить правила синтаксиса .

URI составлен из ограниченного набора символов, состоящего из цифр, букв и цифр графического символа . Зарезервированное подмножество эти символы могут использоваться для разграничения синтаксических компонентов в URI , в то время как остальные символы, включая как зарезервированный набор , так и эти зарезервированные символы, не действующие в качестве разделителей, определяют каждый идентифицирующий элемент данных .

2.1. Процент-Кодирование

Механизм процента-кодирование используется для представления октета данных в компоненте, когда соответствующий символ, который октет находится за пределы позволили установить или используются в качестве разделителя, или в пределах, в компоненте , Октет, закодированный в процентах, кодируется как символ , состоящий из процентного символа «%», за которым следуют шестнадцатеричные цифры , представляющие это числовое число октетов. Например, для «% 20» является процентным кодированием для двоичного октета «00100000» (ABNF:% x20), который в US-ASCII соответствует пространству символ (SP). Раздел 2.4 описывает, когда применяется процентное кодирование и применяется декодирование .

РСТ-закодированы = "%" HEXDIG HEXDIG

'A' в верхнем регистре шестнадцатеричных цифр через 'F' эквивалентны строчных цифр 'A' через 'F', соответственно.Если два URI отличаются только в случае шестнадцатеричных цифр, используемых в октетах с процентами, они эквивалентны. Для согласованности производители URI и нормализаторы должны использовать шестнадцатеричные цифры в верхнем регистре для всех процентов - кодировок.

В общем, только символы, которые могут быть свободно представлены в URL без быть процента-кодированию

  • В незарезервированная символы. Они являются US-ASCII (7-бит) символов
    • A - Z
    • a - z
    • 0 - 9
    • -._~
  • В зарезервированные символы ... когда они используются как в их роли в грамматике URL-адреса, и это . Эти зарезервированные символы:
    • :/?#[]@!$&'()*+,;=

Любые другие символы, за стандарт должен быть правильно процентов кодированный.

Обратите внимание, что URL-адрес может содержать только символы, нарисованные из набора символов US-ASCII (0x00-0x7F): если ваш URL-адрес содержит символы вне этого диапазона кодовых точек, эти символы должны быть соответствующим образом закодированы для представления в США -ASCII (например, с помощью ссылок на объекты HTML/XML). Кроме того, ваше приложение отвечает за их интерпретацию.

Смежные вопросы