Добрый день. Имеем русскую винду и Reporting для построения отчетности, firefox 63.0.3
Названия отчетов в системе написаны на русском языке и при их сохранении в файл, туда автоматом проставляется их название.
на IE файлы сохраняются с корректным названием, в Firefox названия выводятся вот в таком виде:
%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F %D0%BE%D0%B1 %D0%BE%D0%B1%D1%8A%D0%B5%D0%BC%D0%B0%D1%85 %D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%B0 %D1%8D%D1%82%D0%B8%D0%B.xls
Файлы с такими большими названиями не открываются MS Excel.
понятно, что в последствии их можно руками поправить, но хочется выгрузить изначально в правильном виде. проблема точно в браузере, поскольку в других браузерах все ок.
Может кто встречался и знает как это исправить.

Не это? browser.urlbar.decodeURLsOnCopy → true

к сожалению нет. изменение параметра не помогло

Добрый день! Точно такая же проблема, в Интернете и на форуме решения не нашел. С какой версии началось - точно сказать не могу, но раньше все работало как надо. Как сделать так, чтобы названия файлов на русском при сохранении не менялись на «%D0%9F%D1%80%D0%B8%D0%BA%D0%B0%D0%B7%20»? При использовании декодера, преобразование происходит из URL-encoded в UTF-8.

Да, в последних версиях FF данная проблема имеется: файлы с русскими символами сохраняет в URLEncoded (пример: %C3%E8%E1%EA%E8%E9+%E8%ED%F2%E5%F0%E2%E0%EB%FC%ED%FB%E9+%F2%E0%E9%EC%E5%F0+1.5.7.apk)

Данная проблема разработчикам известна, поэтому для копирования ссылок из адресной строки (с русскими символами) в FF есть специальная настройка, которую упоминали выше: browser.urlbar.decodeURLsOnCopy
Такая же настройка нужна (а может и есть) для имен файлов.

Кто может подсказать: есть ли такая настройка для нормального сохранения имен файлов, либо как эффективнее всего пинать разработчиков чтобы данную проблему пофиксили?

Vasilich пишет

Да, в последних версиях FF данная проблема имеется: файлы с русскими символами сохраняет в URLEncoded

Во всяком случае это не везде. По большей части это вина тех кривых рук, что делали сайт. Скинь ссылку где такой файл можно найти.
Как костыль подойдет Download Filename Encoding

zzzephire пишет

Скинь ссылку где такой файл можно найти.

Ну, к примеру, 4PDA (вроде не самый последний сайт в инете): https://4pda.ru/forum/index.php?s=&show … =103443734
при этом у других браузеров (под рукой был Vivaldi) таких косяков нет - имя файла сохраняет как пложено

PS: костыль как ни крутил - не помогает. Что там нужно в настройках (для виндузы 10) выставить? Кодировки перепробовал разные: windows-1251, cp866, UTF-8 - не помогает

Vasilich пишет

PS: костыль как ни крутил - не помогает. Что там нужно в настройках (для виндузы 10) выставить? Кодировки перепробовал разные: windows-1251, cp866, UTF-8 - не помогает

Не работает оттого что кириллица закодирована в кодировке windows-1251 (ох уж эта тавтология), а [firefox] не знает как ее декодировать. Отсюда и неправильное имя файла при скачке. А так как расширение использует для декодирования встроенную функцию [firefox] для этих целей, то и получаем в результате что расширение не может выполнить свою функцию. Как оказалось - это расширение бесполезно.
Можете самостоятельно убедиться в том что [firefox] не умеет обрабатывать такие "хитрые" ссылки, открыв консоль (ctrl + shift + k) и введя там:
(здесь кириллица закодирована в кодировке windows-1251)

Выделить код

Код:

decodeURI("https://4pda.ru/forum/dl/post/21907905/%C3%E8%E1%EA%E8%E9+%E8%ED%F2%E5%F0%E2%E0%EB%FC%ED%FB%E9+%F2%E0%E9%EC%E5%F0+1.5.7.apk");

А вот если бы кириллица была закодирована в кодировке UTF-8, то [firefox] без проблем бы ее декодировал:

Выделить код

Код:

decodeURI("https://4pda.ru/forum/dl/post/21907905/%D0%93%D0%B8%D0%B1%D0%BA%D0%B8%D0%B9%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80%201.5.7.apk");

Причем форум в обоих случаях понимает ссылку и дает скачать файл.
А вот теперь вопрос на мильон: это баг [firefox] ? Или это проблема форума/сайта, ввиду того, что они не следуют стандартам? :whiteflag:


Оставил сообщение на их багтрекере по этому поводу

zzzephire пишет

кириллица закодирована в кодировке windows-1251 (ох уж эта тавтология), а [firefox] не знает как ее декодировать.

Ну так это же явный косяк. Текст на странице умеем декодировать из 1251, а из имени файла не знаем как?


Учитывая, что на том же 4PDA файлы в других браузерах сохраняются корректно - почему FF это не делает?
Тот же сайт 4PDA по-честному везде выставляет заголовки content-type text/html; charset=windows-1251
почему FF ожидает UTF-8 ??

Исходя из этого сообщения [firefox] 56.0 умел так делать (см. прикрепленное изображение). А потом, видимо, решили следовать всей строгости ECMAScript (там говорится только о кодировках UTF). Трудно это назвать косяком [firefox] так как они, вроде, стараются следовать стандартам.

zzzephire пишет

так как они, вроде, стараются следовать стандартам.

неудачное они место выбрали для следования стандартам...

И при чем здесь стандарт на ECMAScript? Речь то не о программировании на этом языке, а про приём файла по протоколу HTTP.


И куда теперь писать, чтобы они вспомнили что такое web вообще и как там к стандартам относятся?

Vasilich пишет

И при чем здесь стандарт на ECMAScript?

Разрабы опираются на спецификации этого стандарта в реализациях функций [firefox] (decodeURI, decodeURIComponent, encodeURI, encodeURIComponent и др.). Этими функциями пользуются дополнения и сам браузер.

Vasilich пишет

Речь то не о программировании на этом языке, а про приём файла по протоколу HTTP

С HTTP у [firefox] всё в порядке, он работает как и должен. В спецификациях HTTP нет требований по конвертациям кодировок имен файлов. Этим уже занимается другая программная прослойка уровнем выше (см. ↑)

И куда написать разработчикам про данную проблему? Судя по всему, они данный форум не читают

Vasilich пишет

Судя по всему, они данный форум не читают

"А на четвертый день Зоркий Сокол заметил, что у сарая одной стены не хватает" (с) :D
вам сюда