Страница 1 из 1
Кодировка в заявках, полученных по почте
Добавлено: 28 апр 2017, 13:21
lefmihalch
Коллеги, что можно сделать, чтобы кириллица отображалась корректно в AgentTicketZoom?
Некоторые пользователи как-то умудряются писать почту так, что в результате в форме просмотра заявки мы видим вот что-то такое:
.
При этом:
1. бывают пользователи, у которых это всегда, а бывают - у которых время от времени
2. если нажать кнопку "Печать" в заявке, то в печатной форме все отображается нормально - по-русски
Как можно добиться того, чтобы в AgentTicketZoom текст отображался так же корректно, как и в печатной форме?
ЗЫ база данных в utf8, все везде в utf8.
ЗЗЫ AgentTicketZoom - это то, куда попадаешь, открывая одну заявку:
http://host/otrs/index.pl?Action=AgentT ... cketID=666
Re: Кодировка в заявках, полученных по почте
Добавлено: 28 апр 2017, 13:31
lefmihalch
И что еще характерно (только что заметил), в представлении index.pl?Action=AgentTicketQueue, когда масштаб включаешь большой и в список вываливает текст заявки, то с кодировкой в "больных" письмах все в порядке:
1. Больное письмо в представлении AgentTicketZoom:
2. Оно же, но в представлении AgentTicketQueue с большим масштабом:
во втором случае существенно понятнее написано.
Что и где настроить, чтобы и в первом было всё всем понятно?
Re: Кодировка в заявках, полученных по почте
Добавлено: 28 апр 2017, 19:55
alexus
Подпись сделайте нормальную, чтобы было видно, что за система и на каком ПО поднята.
Re: Кодировка в заявках, полученных по почте
Добавлено: 27 ноя 2017, 15:48
Crovax
Добрый день.
Аналогичная проблема после обновления OTRS с 5.5 на 6
Заявки создаются на основе входящих электронных писем.
До обновления проблем не было. После обновления заявки от некоторых пользователей в AgentTicketZoom отображаются с ������ ����!
(предположительно пользователи используют какие-то темы оформления в письмах).
Возможно ли это исправить?
Re: Кодировка в заявках, полученных по почте
Добавлено: 28 ноя 2017, 00:30
alexus
Проверьте кодировку таблиц в MySQL.
Re: Кодировка в заявках, полученных по почте
Добавлено: 28 ноя 2017, 15:44
Crovax
alexus писал(а):Проверьте кодировку таблиц в MySQL.
Бегло пробежался по БД, вроде везде стоит UTF8.
К сожалению с SQL вообще и с MySQL в частности, я - на "вы". Т.ч. не знаю как можно эту информацию пакетно выдернуть.
Также возникло предположение из разряда спекуляций: может ли такое быть, если на сервере не хватает каких-либо шрифтов?
Re: Кодировка в заявках, полученных по почте
Добавлено: 28 ноя 2017, 19:26
bowworld
Crovax писал(а):Добрый день.
Подтверждаю,
такие же символы получаю от некоторых клиентов. От других - приходит нормально. Проверил кодировку таблиц - UTF8. Грешу на баг новой "шестерки"
Re: Кодировка в заявках, полученных по почте
Добавлено: 28 ноя 2017, 22:46
yucheburkov
Добрый день,
Аналогичная проблема на 6-ке.
Письма приходят с такой кракозяброй. Если письмо переслать на другой адрес, то в пересылаемом письме все ОК! Т.е. в отправленном экземпляре в качестве "статьи" видно нормальный текст.
Вся база и поля имеют collation utf8_general_ci проверялось также на utf8mb4_general_ci - ситуация не менялась.
Письмо, судя по трассировке приходит в кодировке utf8
Re: Кодировка в заявках, полученных по почте
Добавлено: 28 ноя 2017, 23:40
alexus
Вот нормальная кодировка в письме. Но это не обновлённая система, а поставленная чистая, с нуля. Так что в самой 6ке очевидно проблем нет. Возможно, что при обновлении что-то не так сработало.
Параметры системы:
Версия OTRS (6.0.1)
centos 7.3.1611
MariaDB 5.5.52 InnoDB
Apache 2.4.6 (CentOS)
Perl (5.16.3 (linux))
Re: Кодировка в заявках, полученных по почте
Добавлено: 29 ноя 2017, 07:02
Crovax
alexus писал(а):Вот нормальная кодировка в письме. Но это не обновлённая система, а поставленная чистая, с нуля. Так что в самой 6ке очевидно проблем нет. Возможно, что при обновлении что-то не так сработало.
Письма с испорченной кодировкой составляют процентов 5, не больше. Все остальные - нормальные.
Видимо надо писать разработчикам.
Re: Кодировка в заявках, полученных по почте
Добавлено: 29 ноя 2017, 08:42
Crovax
На запрос
Мне выдало
Код: Выделить всё
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results
character_set_server latin1 <<<------- ??? Проблема или это нормально?
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
А на
Код: Выделить всё
show variables like '%coll%';
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server latin1_swedish_ci
Re: Кодировка в заявках, полученных по почте
Добавлено: 29 ноя 2017, 12:23
bowworld
у меня так:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
Re: Кодировка в заявках, полученных по почте
Добавлено: 29 ноя 2017, 13:34
alexus
VARIABLE_NAME VALUE
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server latin1_swedish_ci
Re: Кодировка в заявках, полученных по почте
Добавлено: 29 ноя 2017, 17:21
yucheburkov
alexus писал(а):VARIABLE_NAME VALUE
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server latin1_swedish_ci
Все идентично. Но проблема остается. Причем похоже на проблему вывода именно первого письма.
Все остальные "телодвижения", как переслать себе или кому-то на адрес и получить ответ от него отображаются без проблем.
Т.е. "Статьи" с этими записями отправленные на почту и полученные с почты корректно отображают не только вновь написанное, но и то, что было написано ранее и в первом письме отображалось непонятно как...
Re: Кодировка в заявках, полученных по почте
Добавлено: 29 ноя 2017, 17:36
yucheburkov
Crovax писал(а):alexus писал(а):Вот нормальная кодировка в письме. Но это не обновлённая система, а поставленная чистая, с нуля. Так что в самой 6ке очевидно проблем нет. Возможно, что при обновлении что-то не так сработало.
Письма с испорченной кодировкой составляют процентов 5, не больше. Все остальные - нормальные.
Видимо надо писать разработчикам.
5% от чего? от всех входящих на почту? если да, то это неправда, так как любая входящая заявка через почту отображается некорректно.
Если от всех статьей/заметок, то зависит у кого их сколько по каждой заявке.
Re: Кодировка в заявках, полученных по почте
Добавлено: 29 ноя 2017, 17:55
yucheburkov
Замечен еще один момент.
Сообщение - ответ на заявку, отправленное с телефона - также отображается некорректно.
Похоже на то, что при выборке и рендеринге страницы где-то подхватывается неверная настройка с кодировкой...
Re: Кодировка в заявках, полученных по почте
Добавлено: 29 ноя 2017, 19:13
bowworld
yucheburkov писал(а):
5% от чего? от всех входящих на почту? если да, то это неправда, так как любая входящая заявка через почту отображается некорректно.
а вот и правда, наблюдаю подобную ситуацию у себя. Сообщения только некоторых клиентов (не более 10%) приходят с некорректной кодировкой.
Re: Кодировка в заявках, полученных по почте
Добавлено: 29 ноя 2017, 19:22
alexus
Наш опыт говорит, что раньше 3-4-го багфикс релиза (т.е. версии 6.0.4) обновляться не стоит
Re: Кодировка в заявках, полученных по почте
Добавлено: 30 ноя 2017, 11:42
yucheburkov
Вскрытие показало, что письма отправленные в кодировке UTF-8 читаются без вопросов.
А вот письма отправленные в кодировке KOI-R Кириллица - поступают с выше обозначенными проблемами. Причем проблема отображения не только для новых писем, но и ранее присланных (до обновления)
Re: Кодировка в заявках, полученных по почте
Добавлено: 07 дек 2017, 17:11
mellavelor
Обновились с 5.0.19 до 6.0.1
Проблемы с кракозябрами только с кодировкой KOI-R (в частности отправляемые Outlook)
В БД стоит
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Неким магическим образом помогло выставить Kernel::System::Ticket::Article::Backend::MIMEBase:::ArticleStorageDB
Но это было вчера.
Сегодня все поломалось и тут,внезапно,при установке Kernel::System::Ticket::Article::Backend::MIMEBase:::ArticleStorageFS кодировка KOI-R перестала отображаться как кракозябры.
Re: Кодировка в заявках, полученных по почте
Добавлено: 02 авг 2018, 20:05
Agrael
Прошу прощения за некрофилию, сам мигрирую с 5 на 6. Столкнулся с той же проблемой - разобрался. Статьи шестерка пишет в Base64 (столбец article_data_mime_attachment.content), а пятерка держит их первозданном виде (столбец article_attachment.content). Возможно это не всегда так и зависит от каких то настроек (не нашел, но и не сильно искал). Решение простое - закодировать статьи пятерки в Base64.
Еще раз прошу прощения, за отсутствие конкретики в виде sql скриптов. Не делюсь, потому что извращенец – хочу ms sql server на линуксе. Для него могу поделиться скриптами - пишите в личку.
Шучу (не не насчет ms sql). И сильно не пинать, я не dba.
Код: Выделить всё
-- В линуксе на сколько я понял (могу глубоко заблуждаться) нельзя linkedserver. Поэтому базу готовлю на винде.
EXEC master.dbo.sp_addlinkedserver @server = N'otrs_current', @srvproduct=N'MySQL', @provider=N'MSDASQL', @provstr=N'Driver={MySQL ODBC 8.0 ANSI Driver};DATABASE={имя вашей отрс базы};OPTION=134217728;PWD{пароль к ней же}=;UID={имя пользователя};SERVER={имя/ip сервера}'
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'rpc out', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'use remote collation', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO
Код: Выделить всё
CREATE FUNCTION [dbo].[get_otrs_content](@otrs_content VARBINARY(MAX))
RETURNS VARBINARY(MAX) AS
BEGIN
Declare @content VARCHAR(MAX)
Declare @result VARCHAR(MAX)
SET @content = CAST(@otrs_content as VARCHAR(MAX))
IF (SELECT CAST(N'' as xml).value('xs:base64Binary(sql:variable("@content"))', 'VARCHAR(MAX)')) IS NULL BEGIN
SET @result = CAST(N'' as xml).value('xs:base64Binary(sql:variable("@otrs_content"))', 'VARCHAR(MAX)')
END
ELSE BEGIN
SET @result = @otrs_content
END
RETURN CAST(@result as VARBINARY(MAX));
END;
Код: Выделить всё
CREATE PROCEDURE [dbo].[sp_merge_article_data_mime_attachment]
AS
BEGIN
SET IDENTITY_INSERT article_data_mime_attachment ON;
MERGE article_data_mime_attachment AS target
USING (
SELECT
id
,article_id
,filename
,content_size
,content_type
,content_id
,content_alternative
,disposition
,dbo.get_otrs_content(content) AS content
,dbo.get_otrs_time(create_time) AS create_time
,create_by
,dbo.get_otrs_time(change_time) AS change_time
,change_by
FROM openquery(otrs_current,'SELECT * FROM article_attachment') AS article
) AS source
ON (target.id = source.id)
WHEN MATCHED AND (
target.article_id <> source.article_id
OR target.filename <> source.filename
OR target.content_size <> source.content_size
OR CAST(target.content_type AS VARCHAR(MAX)) <> CAST(source.content_type AS VARCHAR(MAX))
OR target.content_id <> source.content_id
OR target.content_alternative <> source.content_alternative
OR target.disposition <> source.disposition
OR target.content <> source.content
OR target.create_time <> source.create_time
OR target.create_by <> source.create_by
OR target.change_time <> source.change_time
OR target.change_by <> source.change_by
)
THEN
UPDATE SET
article_id = source.article_id
,filename = source.filename
,content_size = source.content_size
,content_type = source.content_type
,content_id = source.content_id
,content_alternative = source.content_alternative
,disposition = source.disposition
,content = source.content
,create_time = source.create_time
,create_by = source.create_by
,change_time = source.change_time
,change_by = source.change_by
WHEN NOT MATCHED BY TARGET THEN
INSERT (
id
,article_id
,filename
,content_size
,content_type
,content_id
,content_alternative
,disposition
,content
,create_time
,create_by
,change_time
,change_by
) VALUES (
source.id
,source.article_id
,source.filename
,source.content_size
,source.content_type
,source.content_id
,source.content_alternative
,source.disposition
,source.content
,source.create_time
,source.create_by
,source.change_time
,source.change_by
)
OUTPUT $action,Inserted.*,Deleted.*;
SET IDENTITY_INSERT article_data_mime_attachment OFF;
END;
Код: Выделить всё
-- Тадам!
EXECUTE [sp_merge_article_data_mime_attachment];
Вопросы, пожелания, предложения?