Есть ли какой-нибудь алгоритм в C# для кодирования url с символами, которые могут корректировать отображение в веб-браузере?Алгоритм для кода URL
что-то вроде Base64.
Есть ли какой-нибудь алгоритм в C# для кодирования url с символами, которые могут корректировать отображение в веб-браузере?Алгоритм для кода URL
что-то вроде Base64.
Стандарт (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 без быть процента-кодированию
A
- Z
a
- z
0
- 9
-._~
:/?#[]@!$&'()*+,;=
Любые другие символы, за стандарт должен быть правильно процентов кодированный.
Обратите внимание, что URL-адрес может содержать только символы, нарисованные из набора символов US-ASCII (0x00-0x7F): если ваш URL-адрес содержит символы вне этого диапазона кодовых точек, эти символы должны быть соответствующим образом закодированы для представления в США -ASCII (например, с помощью ссылок на объекты HTML/XML). Кроме того, ваше приложение отвечает за их интерпретацию.
Я ищу другие algrithms, base64, я уже использую :) – user2554476
Я набрал «C# url encode» в поисковой системе, и первый результат отвечает на ваш вопрос. Пожалуйста, покажите немного больше усилий в своих вопросах. –
Добро пожаловать! Существует несколько методов, каждый из которых имеет малое поведение. Они подробно обсуждались в других вопросах: http://stackoverflow.com/a/11236038/1344760 – RichardTowers