Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Я нашел одну (две...) картинку, которую Компрессор не переводит в WEBP, почему?


 Поделиться

Я нашел одну (две...) картинку, которую Компрессор не переводит в WEBP, почему?



Какие символы в адресе картинки URI/URL модуль Компрессор воспринимает как верные (валидные), а на какие не реагирует?
Это к вопросу

а почему модуль картинку
Код:
Doska заборнаяMPK,281,29.jpg

 

не преобразовал в WEBP?

Потому, что символы пробела, запятой и кириллица в принципе не должны быть в URI/URL. Эти символы могут быть в названии файла при использовании их внутри ОС Linux, Windows, но не могут быть в URI/URL согласно стандарту RFC3986. Согласно стандарту кроме латинских букв и цифр могут быть еще только следующие знаки в названии файла, передаваемом в URL :

Код:
- _ . ~

 

Все остальные символы URL (вроде той же кириллицы, арабской вязи и т.д. и т.п.) в названии файла (папки) должны быть обязательно закодированы. Процентно-кодированный символ представляет из себя символьный триплет, состоящий из знака "%" и следующих за ним двух шестнадцатеричных чисел.
Спецсимволы вроде : & ? и т.п. используются в URI/URL для специальных целей.

Вот так должно выглядеть название файла Doska заборнаяMPK,281,29.jpg в URI/URL:

Код:
Doska%2520%D0%B7%D0%B0%D0%B1%D0%BE%D1%80%D0%BD%D0%B0%D1%8FMPK%252C281%252C29.jpg

 

Т.е., как видите, никаких пробелов, запятых и кириллицы быть не должно в URL. Для картинок, которые обрабатывает движок получается именно такого вида URL. Если у вас это не так, то это значит, что, возможно, один из основополагающих механизмов движка поломан или намеренно изменен неграмотным образом. Или просто используется сторонний код, автор которого не предполагал, что в названии файла может быть помимо латиницы и цифр нечто иное. Вообще, в принципе использование в названиях файлов пробелов, кириллицы и т.д. - дело неблагодарное, т.к. это всегда приводит рано или поздно к некоторым неудобствам или неприятностям. Но в идеальном мире правильно URL-кодированные такие имена не должны приводить к проблемам.

Движок Opencart использует для кодирования "неправильных" символов функцию rawurlencode, которая как раз работает по стандарту RFC3986. Откуда тогда берутся на странице невалидные URI/URL (ссылки)? Из-за ошибок, когда ухитряются непонятными способами все же разместить в итоговом коде такие запрещенные стандартом URI/URL. Почему же браузер показывает изображения по таким неверным ссылкам? Потому, что браузеры научились исправлять многие ошибки, причем, даже нередко очень грубые ошибки. Но верно исправить ошибку браузер может не всегда и не везде, да и не любой браузер.
 

ВАЖНО IMPORTANT
Модуль Компрессор во избежании непредвиденных ситуаций не пытается обработать изображения со странными URL. Потому, что таких URL в исправном движке Opencart в принципе не должно быть.



Конечно, ничто не мешает пользователю руками вбить в код HTML какую-угодно ссылку. Но, как минимум, сам движок при обработке изображений дает для них валидный URL. Движок Opencart всегда работает по стандарту RFC3986. Модуль Компрессор тоже работает в полном соответствии с этим стандартом. Попытка обработки невалидных (не соответствующих стандарту) ссылок на изображения может привести к непредсказуемым коллизиям, глюкам и багам, а потому такая обработка не производится, сами невалидные ссылки не приветствуются, но и не мешают нормальной работе Компрессора, нестандартные ссылки просто игнорируются. Все это сделано ради повышения общего уровня надежности и стабильности работы сайта.

ИТОГ. Для внутреннего использования внутри операционной системы название файла может содержать самые разные символы, буквы различных алфавитов и определенные специальные символы. Но для внешнего использования (когда веб-сервер передает информацию в браузер) URL, в котором будут представлены подобные названия файлов, определенным образом кодируется.


Comments

Нет комментариев для отображения


×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.