Добрый день!
Есть следующий набор:
FreeBSD 9.1-RELEASE
OTRS 3.2.11
Apache22
mysql-server-5.5
Проблема с кодировкой имен прикрепленных к тикетам файлов при попытке скачать их через IE. При этом хром отрабатывает имена нормально.
Нашел на форуме тему с аналогичной проблемой viewtopic.php?f=5&t=1491&p=7631&hilit=% ... 0%B0#p7631, но в моем случае правка Layout.pm никак не повлияла на результат.
Более того, пытался обновить OTRS до версии 3.3 в надежде на исправление ситуации - не помогло, плюс всплыли другие косяки с которыми сейчас нет времени разбираться.
Подскажите плз, куда еще можно посмотреть?
Кодировка в названиях вложений через IE
Модератор: ykolesnikov
-
- OTRS Новобранец
- Сообщения: 12
- Зарегистрирован: 11 дек 2013, 16:24
-
- OTRS Гуру
- Сообщения: 3119
- Зарегистрирован: 24 дек 2010, 09:27
- Откуда: Череповец
- Благодарил (а): 4 раза
- Поблагодарили: 5 раз
- Контактная информация:
Re: Кодировка в названиях вложений через IE
Для начала сообщите версию IE и соответствует ли она заявленным в Release Notes для Вашей версии OTRS.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая
-
- OTRS Новобранец
- Сообщения: 12
- Зарегистрирован: 11 дек 2013, 16:24
Re: Кодировка в названиях вложений через IE
Кробывал как 9 ю версию, которая не поддерживается, так и 8 ю которая поддерживается. Результат одинаковый.
-
- OTRS Бывалый
- Сообщения: 310
- Зарегистрирован: 25 окт 2012, 15:06
- Откуда: Воронеж
- Поблагодарили: 2 раза
Re: Кодировка в названиях вложений через IE
Сталкивался недавно. Проблема в том, что спецификации HTTP протокола развиваются, а браузеры продолжают их интерпретировать каждый по своему. Путаницы добавляют последние версии IE, мимикрирующие под браузер Mozilla записью в UserAgent
Вот код исправляющий ошибку
Заодно, вот ещё кусок, который для Windows помогает в случае битой кодировки в скачиваемых из OTRS csv файлах
Вот код исправляющий ошибку
Код: Выделить всё
diff --git a/Kernel/Output/HTML/Layout.pm b/Kernel/Output/HTML/Layout.pm
index 4b88fc8..997c57f 100644
--- a/Kernel/Output/HTML/Layout.pm
+++ b/Kernel/Output/HTML/Layout.pm
@@ -2475,6 +2475,8 @@ returns browser output to display/download a attachment
sub Attachment {
my ( $Self, %Param ) = @_;
+ $Param{Charset} ||= 'utf-8';
+
# check needed params
for (qw(Content ContentType)) {
if ( !defined $Param{$_} ) {
@@ -2516,7 +2518,12 @@ sub Attachment {
# only deliver filename if needed
if ($FilenameInHeader) {
- $Output .= " filename=\"$Param{Filename}\"";
+ if ( $Self->{Browser} eq 'MSIE' && ( $Self->{BrowserMajorVersion} == 7 || $Self->{BrowserMajorVersion} == 8 ) ) {
+ $Output .= " filename=" . $Self->LinkEncode($Param{Filename}).';';
+ } else {
+ $Output .= " filename=\"$Param{Filename}\";";
+ $Output .= " filename*=UTF-8''" . $Self->LinkEncode($Param{Filename}).';';
+ }
}
}
Код: Выделить всё
diff --git a/Kernel/Output/HTML/Layout.pm b/Kernel/Output/HTML/Layout.pm
index 4b88fc8..4aefa29 100644
--- a/Kernel/Output/HTML/Layout.pm
+++ b/Kernel/Output/HTML/Layout.pm
@@ -2545,6 +2545,10 @@ sub Attachment {
# fix for firefox HEAD problem
if ( !$ENV{REQUEST_METHOD} || $ENV{REQUEST_METHOD} ne 'HEAD' ) {
+ # UTF-8 BOM
+ if ( $Self->{UserCharset} =~ m/utf-8|utf8/i && $Param{ContentType} =~ m/text\// ) {
+ $Output .= "\xEF\xBB\xBF";
+ }
$Output .= $Param{Content};
}
Меркушов Виктор, perl программист
-
- OTRS Новобранец
- Сообщения: 12
- Зарегистрирован: 11 дек 2013, 16:24
Re: Кодировка в названиях вложений через IE
Виктор, это гениально!
Большое спасибо.
Решение в секции only deliver filename if needed решило проблему с именами аттачей. Собственно то что требовалось.
Попробовал в нести изменения в секцию fix for firefox HEAD problem, но к сожалению появляется ошибка AJAX, но в любом случае Ваше решение очень помогло. Еще раз спасибо.
Большое спасибо.
Решение в секции only deliver filename if needed решило проблему с именами аттачей. Собственно то что требовалось.
Попробовал в нести изменения в секцию fix for firefox HEAD problem, но к сожалению появляется ошибка AJAX, но в любом случае Ваше решение очень помогло. Еще раз спасибо.