Расшифровка g кода онлайн: СТАНОК С ЧПУ СВОИМИ РУКАМИ
Содержание
Просмотр G-кода онлайн, без регистрации, без смс
3D-печать
Подпишитесь на автора
Подписаться
Не хочу
18
Так уж сложилось что у многих принтеры с одним соплом, а печатать порой хочется в несколько цветов. Самое простое это печатать по частям а потом склеить детали. Но если нужно всего-лишь печатать разным цветом на разных слоях, то достаточно просто сменить цвет пластика в определенный момент. И вот тут есть варианты.
1. Метод ручного тыка.
Сидеть и ждать когда печать дойдет до нужного момента, нажать паузу внутри заполнения или подать команду М600 для смены прутка, если прошивка поддерживает эту команду. Можно так же нажать и в меню принтера, если у такового имеется экран с возможностью управления.
Но это не совсем ‘тру’ делать что-то руками и подгадывать момент, когда перед вами целый автоматический станок. Конечно без ручной замены прутка тут не обойтись, но можно сделать так, чтобы и момент ловить не пришлось. Переходим к варианту два:
2. Используем просмотрщик G-кода.
Тут на выручку в плане автоматизации приходит просмотрщик G-кода. Я нашел его на Thingiverse, оттуда попал на Github, скопировал себе репозиторий и потом, когда было свободное время, перевел меню и тексты на русский. Ну конечно я не супер переводчик, да и не все пункты перевел, но уже стало удобнее, для тех, кто не любит английские версии.
Итак идем по адресу: http://thetest.me/G-code/
Загружаем ваш, сгенерированный G-код и в режиме послойного отображения находим нужный момент.
Запоминаем номер строки и дальше открываем этот же G-код в любом текстовом редакторе, например notepad на Windovs или TextWrangler на Os X. Находим эту строку и вставляем код смены прутка – M600. Сохраняем и все, можно печатать.
Этот код, обычно, ставит на паузу печать, поднимает голову, отводит её в ноль по оси X и вытаскивает пруток. Чтобы продолжить печать, нужно вставить новый пруток и нажать на потенциометр или кнопку на плате управления, где обычно экран принтера.
Но тут есть одна неприятная особенность, в прошивке может стоять такой параметр, который отключает удержание движков в момент смены прутка. У меня по крайней мере на марлине так было на двух принтерах. И тут главное не сдвинуть каретку при замене иначе можно получить сдвиг слоев.
Полезным бонусом будет возможность добавить звуковой сигнал перед командой M600, чтобы принтер вас, так сказать – позвал к себе 🙂
Про G-код viewer, могу сказать что это просто отличный инструмент, он позволяет не только посмотреть в различных вариантах на модель, код, слои, но и может посчитать сколько пластика будет потрачено и т.д. Нужно только задать нужные параметры своего принтера в меню.
На этом все. В следующий раз могу рассказать подробнее про извлечение звуков из принтера, про это писали уже на портале, но мало ли. 🙂
Подпишитесь на автора
Подписаться
Не хочу
18
Основы G-кода для 3D печати: список и руководство
3DPrintStory
  
Процесс 3D печати
  
Основы G-кода для 3D печати: список и руководство
G-код — это язык программирования для числового программного управления (ЧПУ). Другими словами, это язык, на котором говорит компьютер, управляющий машиной, и он передает все команды, необходимые для движения и других действий.
Хотя G-код является стандартным языком для различного настольного и промышленного оборудования, с ним можно отлично познакомиться с помощью 3D принтера. Возможно, вы до сих пор не разбирались с этим, и это нормально, поскольку 3D-слайсеры генерируют G-код «автоматически».
Тем не менее, если вы хотите глубже понять 3D-печать, важно изучить основы G-кода. Эти знания позволят вам лучше диагностировать и контролировать процессы 3D печати, а также настроить прошивку 3D принтера, такую как RepRap или Marlin.
В этой статье мы расскажем об основах G-кода, в том числе о том, как читать, понимать и писать команды, даже если вы новичок в программировании!
Что такое G-код?
Для тех, кто не знаком с программированием в целом, можете рассмотреть G-код как последовательные строки инструкций, каждая из которых сообщает 3D-принтеру о выполнении определенной задачи. Эти строки называются командами, и принтер выполняет их одну за другой, пока не дойдет до конца кода.
Хотя термин «G-код» используется для обозначения языка программирования в целом, это также один из двух типов команд, используемых в 3D-печати: «основные» и «вспомогательные» команды.
Основные командные строки отвечают за типы движения в 3D-принтере. Такие команды обозначаются буквой «G». Помимо управления движением по трем положительным осям, выполняемым печатающей головкой, они также отвечают за экструзию нити.
С другой стороны, разные команды заставляют машину выполнять не геометрические задачи. В 3D-печати такие задачи включают команды нагрева сопла и станины, а также управление вентилятором и т.п. Вспомогательные команды обозначаются буквой «M».
Синтаксис G-кода
Каждая строка с G-код командами имеет определенный синтаксис. Каждая строка соответствует только одной команде, что может привести к очень длинным кодам.
Первым аргументом любой строки является сам код команды. Как вы видели, это может быть код типа «G» или «M», за которым следует номер, идентифицирующий команду. Например, «G0» соответствует команде линейного перемещения.
Далее идут параметры, которые более точно определяют команду. Например, для команды линейного перемещения G0 можно добавить конечное положение и скорость перемещения, также обозначаемую заглавными буквами. У каждой команды есть свой набор параметров, которые мы рассмотрим ниже.
Комментарии в G-коде
Когда вы будете читать G-код команды, вы увидите точки с запятой после букв и чисел, которые объясняют, что делает код. Вот пример строки с комментарием к коду:
G1 X25 Y5; Я комментирую код!
Программистам часто необходимо включать объяснения на понятном языке, чтобы другие программисты могли понять определенные строки или участки кода. Также может случиться так, что вы забудете, почему вы написали что-то определенным образом, в результате чего вам будет трудно снова разобраться. Для решения этой проблемы используются комментарии к коду. Комментарии включают все (в той же строке) после точки с запятой и полностью игнорируются машиной при выполнении G-кода. Таким образом, они предназначены исключительно для глаз программистов.
Важные команды для 3D печати
Хотя существуют буквально сотни команд G-кода, в следующих нескольких разделах мы рассмотрим самые основные и важные из них. Как только вы освоитесь, вы сможете самостоятельно изучить и другие команды.
G0 и G1: линейное движение
Команды G0 и G1 выполняют линейные перемещения. По соглашению, G0 используется для движений без экструзии, таких как начальные и холостые перемещения, в то время как G1 охватывает все линейные движения с экструзией материала.
Однако обе команды работают одинаково. Параметры для G0 или G1 включают конечные положения для всех осей X, Y и Z, степень экструзии, выполняемую во время перемещения, и скорость, определяемую скоростью подачи в заданных единицах.
Пример
G1 X90 Y50 Z0.5 F3000 E1 сообщает 3D принтеру двигаться по прямой линии (G1) к конечным координатам X = 90 мм, Y = 50 мм, Z = 0,5 мм при скорости подачи (F) 3000 мм / мин. и выдавливании (E) 1 мм материала в экструдере.
Большинство линейных перемещений выполняются в пределах одного слоя, а это означает, что координата Z обычно не указывается в командной строке.
G90 и G91: абсолютное и относительное позиционирование
Команды G90 и G91 сообщают машине, как интерпретировать координаты, используемые для движения. G90 устанавливает «абсолютное позиционирование», которое обычно используется по умолчанию, а G91 — «относительное позиционирование».
Ни одна из команд не требует каких-либо параметров, и установка одного автоматически отменяет другой. Позиционирование работает довольно просто, так что давайте сразу перейдем к делу.
Пример
Допустим, мы хотим переместить печатающую головку на X = 30 в строке. В режиме абсолютного позиционирования это будет выглядеть так:
G90; устанавливает абсолютное позиционирование G0 X30; перемещается в координату X = 30
Этот простой ход скажет принтеру переместить печатающую головку так, чтобы она располагалась на X = 30. Теперь, для перемещения относительного позиционирования, нам нужно знать, где печатающая головка находится в данный момент. Предположим, что это X = 10:
G90; устанавливает относительное позиционирование G0 X20; перемещается на +20 мм по оси X
G91 сначала указывает 3D принтеру интерпретировать координаты относительно текущего положения (X = 10). Зная это, достаточно просто нужно переместиться на 20 мм в положительном направлении оси X, таким образом достигнув X = 30, как нам хотелось бы.
G28 и G29: автоматическое возвращение «в нуль» и калибровка стола
«Возвращение в исходное положение» — это процесс перемещения вплоть до физических ограничений для всех осей движения. Команда G28 выполнит эту задачу, перемещая печатающую головку до тех пор, пока не сработают концевики по всем осям.
Перемещение «в нуль» важно не только для ориентации устройства, но и для предотвращения выхода печатающей головки за границы. Команда G28 обычно выполняется перед каждым началом 3D печати.
Конкретная ось может быть индивидуально перемещена в исходное положение путем включения X, Y или Z в качестве параметров. В противном случае только G28 обеспечит перемещение в нуль по всем осям.
Пример
G28 X Y; только оси X и Y G28; в нуль по всем осям
Другая команда, G29, запускает последовательность автоматической калибровки стола. Существует множество различных методов выравнивания стола перед 3D печатью. Обычно эта операция обеспечивается прошивкой, а не конечными пользователями. По этой причине мы не будем вдаваться в подробности, касающиеся методов и параметров команд. Просто знайте, что G29 обычно отправляется после автоматического возврата в исходное положение (G28). В результате должна выполняться автоматическая калибровка стола, которая определяется прошивкой.
G29; выполнить последовательность автоматического выравнивания станины
M104, M109, M140 и M190: установка температуры
Это важные команды, которые, опять же, не связаны с движением.
Для запуска команда M104 устанавливает целевую температуру, которую должен достичь хот-энд, и удерживает ее до тех пор, пока не будет указано иное.
Некоторые из параметров включают фактическое значение температуры (S) и печатающую головку (T) для нагрева.
Пример
M104 S210; установить целевую температуру для хот-энда на 210 градусов
Эта командная строка указывает 3D принтеру нагреть хот-энд до 210 ° C. После установки целевой температуры принтер продолжит выполнение следующей командной строки, нагревая хотэнд.
В качестве альтернативы, если мы хотим подождать, пока эта цель не будет достигнута, прежде чем перейти к следующей строке, мы можем использовать команду M109.
M109 S210; установить целевую температуру горячего конца 210 градусов и ничего не делать, пока она не будет достигнута
Установка температуры стола очень похожа, но вместо этого утсанавливается с помощью команд M140 и M190:
M140 S110; установить целевую температуру стола на 110 градусов M190 S110; установить целевую температуру кровати на 110 градусов и ничего не делать, пока она не будет достигнута
M106 и M107: Управление вентилятором
Еще одна важная команда для 3D принтеров: команды M106 и M107 обеспечивают управление вентилятором.
M106 включает вентилятор и устанавливает его скорость. Это особенно полезно для вентилятора охлаждения детали, так как во время процесса 3D печати во время печати первого слоя и перемычки требуются разные скорости.
Параметр скорости должен иметь значение от 0 до 255. Значение 255 обеспечивает 100% мощности, и любое число в этом диапазоне будет указывать соответствующий процент в процентах.
Пример
M106; включить вентилятор на максимальной (100%) скорости M106 S128; включите вентилятор и установите его на 50% мощности
Несколько вентиляторов с регулируемой скоростью можно определить с помощью параметров индекса (P), поскольку каждому вентилятору присваивается индекс встроенным ПО.
Наконец, команда M107 отключит указанный вентилятор. Если индексный параметр не указан, обычно отключается частичный охлаждающий вентилятор.
Структура программы
Теперь у нас есть хорошая возможность взглянуть на реальный фрагмент кода, который используется для 3D печати. Как мы увидим далее, программы G-кода можно разделить на три отдельных раздела.
Стоит отметить, что если вы используете текстовый редактор для открытия файла G-кода, созданного с помощью 3D-слайсера, возможно, он не сразу запустится с G- или M-командами. Например, такой слайсер, как Cura или Simplify3D, запускает код, включая некоторые параметры процесса печати, определенные ранее в комментариях. Эти линии не влияют на печать, а вместо этого представляют собой краткий справочник по таким параметрам, как, например, высота слоя.
Этап 1: Инициализация
Первый раздел любой программы включает в себя подготовительные задачи, необходимые для начала печати 3D модели. Ниже приведены первые шесть строк команд инициализации G-кода из фактического задания на 3D-печать.
G90 M82 M140 S80 M104 S200 G28 G29
Как мы уже теперь знаем, первая строка говорит, что при движении необходимо использовать абсолютное позиционирование, а вторая строка говорит экструдеру также интерпретировать экструзию в абсолютных единицах.
Третья и четвертая линии начинают нагревать слой и сопло до заданных температур. Обратите внимание, что он не будет ждать достижения целевой температуры, а это означает, что принтер автоматически вернется в исходное положение и выровняет стол при нагревании.
Некоторые процедуры инициализации (например, тот, который используется PrusaSlicer) включают в себя процесс очистки сопла или печать одной прямой линии перед переходом к процессу 3D печати.
Этап 2: 3D печать
Вот где начинается волшебство. Если вы посмотрите на нарезанный на слои файл G-кода, вы осознаете, что на самом деле невозможно понять, что на самом деле делает сопло.
3D печать — это послойный процесс, поэтому вы обнаружите, что этот этап включает в себя множество движений в плоскости XY при печати одного слоя. Как только это будет сделано, одно крошечное движение в направлении Z определит начало следующего слоя.
Вот пример того, как команды G-кода могут выглядеть на этапе 3D печати:
G1 X103. 505 Y153.291 E4.5648; движение и выдавливание в плоскости XY G1 X103.291 Y153.505 E4.5804; движение и выдавливание в плоскости XY G1 Z0.600 F3000; сменить слой G1 X104.025 Y154.025 F9000; движение в плоскости XY G1 X95.975 Y154.025 E0.4133 F1397; движение и выдавливание в плоскости XY
Этап 3: перезагрузка 3D принтера
Наконец, когда 3D печать завершена, некоторые последние строки команд G-кода переводят принтер в состояние по умолчанию.
Например, сопло может перейти в заранее определенное положение, нагреватели хот энда и стола выключены, а двигатели отключены.
M107; выключить вентилятор G1 Z10; отодвиньте сопло от печати M104 S0; выключить обогрев горячего конца M140 S0; выключить обогрев кровати M84; выключить моторы
Ввод и вывод данных через терминал
До сих пор мы говорили только о том, что компьютер отправляет на 3D принтер команды G-кода (обычно передаются через SD-карту). Однако это не единственный способ коммуникации.
Некоторые программные продукты для управления 3D принтером, такие как Pronterface и OctoPrint, позволяет напрямую взаимодействовать с 3D-принтером, и в этом случае вы можете вводить команды вручную.
По понятным причинам было бы непрактично печатать что-либо, отправляя строки кодов по отдельности. Но иногда этот метод коммуникации требуется для других целей, например, для получения ценной информации для калибровки или когда в 3D принтере отсутствует дисплей.
Например, команда M105 «сообщить о температурах» извлечет текущие температуры сопла и слоя (которые затем могут отображаться чем-то вроде OctoPrint).
Эта связь также очень полезна для просмотра и изменения настроек EEPROM, которые жестко запрограммированы на уровне прошивки. Такие параметры, как шаги двигателя / мм, максимальная скорость подачи или ПИД-регулятор, можно визуализировать с помощью M503 («настройки отчета»), изменить вручную, а затем сохранить с помощью M500 («сохранить настройки»).
Написание G-кода
К настоящему времени вы должны быть в состоянии читать и понимать G-код намного лучше. Рекомендуем посмотреть в сторону следующих вариантов для углубления своих знаний:
- онлайн-визуализация G-кода — отличный инструмент для проверки ваших навыков, поскольку вы можете писать команды G-кода и соответственно имитировать их. На самом деле это очень весело!
- просмотр экспортированных файлов G-кода из слайсеров также должен дать вам некоторое представление о том, как G-код работает для 3D печати.
- в качестве справочника по командам можно использовать информацию с официального сайта Marlin.
Совместимость
Мы надеемся, что с пониманием команд G-кода вы станете более продвинутым пользователем 3D принтера. Хотя G-код — не самый сложный компьютерный язык, он все же требует практики и изучения.
Прежде чем завершить эту статью, возможно, стоит немного поговорить о совместимости G-кода.
Существует много типов прошивок для 3D печати, и каждый может иметь разные «разновидности» G-кода. Это может привести к серьезным проблемам совместимости, поскольку команды, работающие на одной машине, могут не работать на другой.
Слайсеры обрабатывают это, передавая код через машинно-зависимые драйверы постобработки. Постпроцессор обнаруживает разновидность входящего кода и преобразует его во что-то понятное для микропрограммы.
Надеемся, что вам понравилось это краткое руководство. Удачного кодинга и 3D печати!
gcode viewer — онлайн просмотрщик и анализатор gcode в вашем браузере!
Выберите файл GCode
Перетащите файл сюда
Индикаторы прогресса
Информация о модели
Информация о слое
93/сек
Показать движения без выдавливания
Показать отказы и перезапуски
Переместить модель в центр сетки
Показывать разные скорости разными цветами
Эмулировать ширину экструзии
Сделать линии слегка прозрачными
Показать +1 слой
Опции анализатора GCode
Для этого требуется повторный анализ файла:
Сортировать слои по Z
Скрыть пустые слои
Показать GCode на вкладке GCode (требует много памяти!)
Информация о принтере
Диаметр пластика:
Тип пластика:
АБС
НОАК
Размер сопла:
Объемный E
Стоимость часа работы принтера:
Цена нити (за грамм):
Анализ ошибок
Выполнить анализ
Результаты анализа ошибок рендеринга
- 2Д
- 3D
- G-код
- О
gCodeViewer — визуализатор, просмотрщик и анализатор GCode в вашем собственном браузере! Работает на любой ОС практически в любом современном браузере (хром, фф, сафари 6, опера, ie10 тоже должны работать). Все, что вам нужно сделать, это перетащить ваш файл *.gcode в указанную зону.
Текущие функции включают:
- Визуализация GCode в 2D, слой за слоем
- Показать убирается и перезапускается
- Показать скорости печати/перемещения/отвода
- Показать только часть слоя, анимировать последовательность печати слоев
- Показать два слоя одновременно, чтобы можно было проверить выступы
- Отрегулируйте ширину линии для более точного моделирования печати
- Средство просмотра Gcode попытается проанализировать диаметры сопла и нити накала из gcode, но может не сделать этого. В этом случае вам нужно будет установить его вручную на вкладке «Информация о принтере»
- Анализ GCode
- Время печати, количество использованного пластика, высота слоя и т. д. для всего файла и для одного слоя
- Привязать визуализируемую деталь к файлу GCode (т.е. выбрать определенную часть 2d-визуализации, переключиться в режим просмотра GCode — будет выделен список строк, отвечающих за визуализируемую деталь)
- Мультиплатформенный, доступен онлайн (но работает и офлайн), работает локально (нигде не загружает g-код и ничего не загружает, кроме самого приложения)
- 3D визуализация (не знаю зачем, скучно и бесполезно.. нужно переписывать с нуля)
- И да, он медленный, потребляет много памяти и поддерживает только современные браузеры
- Полностью открытый исходный код, поэтому вы можете использовать его по своему усмотрению
Все исходники доступны на https://github.com/hudbrog/gCodeViewer
Если вы обнаружите какие-либо ошибки или у вас есть пожелания — не стесняйтесь публиковать их на https://github. com/hudbrog/gCodeViewer/issues 9.0019
И я был бы признателен, если бы вам понравилось это на странице Thingiverse: http://www.thingiverse.com/thing:35248
Декодирование и кодирование URL — онлайн
Познакомьтесь с декодированием и кодированием URL, простым онлайн-инструментом, который делает именно то, что говорит: декодирует из кодировки URL, а также быстро и легко кодирует в нее. URL кодирует ваши данные без проблем или декодирует их в удобочитаемый формат.
Кодирование URL-адресов, также известное как «процентное кодирование», представляет собой механизм кодирования информации в универсальном идентификаторе ресурса (URI). Хотя это известно как кодирование URL-адресов, на самом деле оно более широко используется в основном наборе унифицированных идентификаторов ресурсов (URI), который включает в себя как унифицированный указатель ресурса (URL), так и унифицированное имя ресурса (URN). Как таковой он также используется при подготовке данных медиа-типа «application/x-www-form-urlencoded», который часто используется при отправке данных формы HTML в HTTP-запросах.
Дополнительные параметры
- Набор символов: В случае текстовых данных схема кодирования не содержит набор символов, поэтому вам необходимо указать, какой набор символов использовался в процессе кодирования. Обычно это UTF-8, но могут быть и многие другие; если вы не уверены, поэкспериментируйте с доступными вариантами или попробуйте вариант автоматического обнаружения. Эта информация используется для преобразования декодированных данных в набор символов нашего веб-сайта, чтобы все буквы и символы отображались правильно. Обратите внимание, что это не относится к файлам, поскольку к ним не нужно применять веб-безопасные преобразования.
- Декодировать каждую строку отдельно: Закодированные данные обычно состоят из сплошного текста, поэтому даже символы новой строки преобразуются в их процентно-кодированные формы. Перед декодированием из входных данных удаляются все незакодированные пробелы, чтобы защитить целостность входных данных. Эта опция полезна, если вы собираетесь декодировать несколько независимых записей данных, разделенных разрывами строк.
- Режим реального времени: Когда вы включаете эту опцию, введенные данные немедленно декодируются с помощью встроенных функций JavaScript вашего браузера, без отправки какой-либо информации на наши серверы. В настоящее время этот режим поддерживает только набор символов UTF-8.
Безопасно и надежно
Все соединения с нашими серверами осуществляются через безопасные зашифрованные соединения SSL (https). Мы удаляем загруженные файлы с наших серверов сразу после обработки, а полученный загружаемый файл удаляется сразу после первой попытки загрузки или 15 минут бездействия (в зависимости от того, что короче). Мы никоим образом не храним и не проверяем содержимое отправленных данных или загруженных файлов. Ознакомьтесь с нашей политикой конфиденциальности ниже для получения более подробной информации.
Совершенно бесплатно
Наш инструмент можно использовать бесплатно. Отныне вам не нужно скачивать какое-либо программное обеспечение для таких простых задач.
Сведения о кодировке URL
Типы символов URI
Символы, разрешенные в URI, либо зарезервированы, либо незарезервированы (или символ процента как часть кодировки процента). Зарезервированные символы — это символы, которые иногда имеют особое значение. Например, символы косой черты используются для разделения разных частей URL-адреса (или, в более общем смысле, URI). Незарезервированные символы не имеют такого специального значения. Используя процентное кодирование, зарезервированные символы представляются с помощью специальных последовательностей символов. Наборы зарезервированных и незарезервированных символов, а также обстоятельства, при которых определенные зарезервированные символы имеют специальное значение, немного меняются с каждой новой редакцией спецификаций, регулирующих URI и схемы URI.
Другие символы в URI должны быть закодированы в процентах.
Зарезервированные символы с процентным кодированием
Когда символ из зарезервированного набора («зарезервированный символ») имеет особое значение («зарезервированное назначение») в определенном контексте, и схема URI говорит, что необходимо использовать этот символ для какой-либо другой цели, то символ должен быть закодирован в процентах. Процентное кодирование зарезервированного символа означает преобразование символа в соответствующее ему значение байта в ASCII, а затем представление этого значения в виде пары шестнадцатеричных цифр. Цифры, которым предшествует знак процента («%»), затем используются в URI вместо зарезервированного символа. (Для символа, отличного от ASCII, он обычно преобразуется в последовательность байтов в UTF-8, а затем каждое значение байта представляется, как указано выше.)
Зарезервированный символ «/», например, если он используется в компоненте «путь» URI, имеет особое значение, поскольку он является разделителем между сегментами пути. Если, в соответствии с заданной схемой URI, «/» должен быть в сегменте пути, то в сегменте должны использоваться три символа «%2F» (или «%2f») вместо «/».
Зарезервированные символы, которые не имеют зарезервированного назначения в конкретном контексте, также могут быть закодированы в процентах, но семантически не отличаются от других символов.
В компоненте «запрос» URI (часть после символа «?»), например, «/» по-прежнему считается зарезервированным символом, но обычно не имеет зарезервированного назначения (если не указано иное в конкретной схеме URI). Символ не нужно кодировать в процентах, если он не имеет зарезервированного назначения.
URI, отличающиеся только тем, является ли зарезервированный символ процентным кодированием или нет, обычно считаются неэквивалентными (обозначающими один и тот же ресурс), за исключением случаев, когда рассматриваемые зарезервированные символы не имеют зарезервированного назначения. Это определение зависит от правил, установленных для зарезервированных символов отдельными схемами URI.
Незарезервированные символы с процентным кодированием
Символы из незарезервированного набора никогда не нуждаются в процентном кодировании.
URI, отличающиеся только тем, является ли незарезервированный символ процентным кодированием или нет, эквивалентны по определению, но на практике процессоры URI не всегда могут обрабатывать их одинаково. Например, потребители URI не должны рассматривать «%41» иначе, чем «A» («%41» — это процентное кодирование «A») или «%7E» иначе, чем «~», но некоторые это делают. Поэтому для обеспечения максимальной совместимости производителям URI не рекомендуется процентное кодирование незарезервированных символов.
Процентное кодирование символа процента
Поскольку символ процента («%») служит индикатором октетов, закодированных в процентах, он должен быть закодирован в процентах как «%25», чтобы этот октет можно было использовать в качестве данных в URI.
Процентное кодирование произвольных данных
Большинство схем URI включают представление произвольных данных, таких как IP-адрес или путь к файловой системе, в виде компонентов URI. Спецификации схемы URI должны, но часто не обеспечивают явное сопоставление между символами URI и всеми возможными значениями данных, представленными этими символами.
Двоичные данные
После публикации RFC 1738 в 1994 г. было указано, что схемы, обеспечивающие представление двоичных данных в URI, должны делить данные на 8-битные байты и кодировать каждый байт в процентах в так же, как указано выше. Значение байта 0F (шестнадцатеричное), например, должно быть представлено как «%0F», но значение байта 41 (шестнадцатеричное) может быть представлено как «A» или «%41». Использование незакодированных символов для буквенно-цифровых и других незарезервированных символов обычно предпочтительнее, поскольку это приводит к более коротким URL-адресам.
Символьные данные
Процедура процентного кодирования двоичных данных часто экстраполируется, иногда неуместно или без полного уточнения, для применения к символьным данным. В годы становления World Wide Web при работе с символами данных в репертуаре ASCII и использовании соответствующих им байтов в ASCII в качестве основы для определения последовательностей с процентным кодированием эта практика была относительно безвредной; многие люди предполагали, что символы и байты сопоставляются один к одному и взаимозаменяемы. Однако потребность в представлении символов за пределами диапазона ASCII быстро росла, и схемы и протоколы URI часто не могли обеспечить стандартные правила подготовки символьных данных для включения в URI. Следовательно, веб-приложения начали использовать различные многобайтовые кодировки, кодировки с отслеживанием состояния и другие кодировки, несовместимые с ASCII, в качестве основы для процентного кодирования, что привело к неоднозначности, а также к трудностям с надежной интерпретацией URI.
Например, многие схемы и протоколы URI, основанные на RFC 1738 и 2396, предполагают, что символы данных будут преобразованы в байты в соответствии с некоторой неуказанной кодировкой символов, прежде чем они будут представлены в URI незарезервированными символами или байтами с процентным кодированием. Если схема не позволяет URI предоставить подсказку о том, какая кодировка использовалась, или если кодировка конфликтует с использованием ASCII для процентного кодирования зарезервированных и незарезервированных символов, тогда URI нельзя надежно интерпретировать.
Всего комментариев: 0