SB-MaterialAdmin / Web

SourceBans Material Design
64 stars 45 forks source link

Из-за символов не сохраняются комментарии. #248

Open IIIef opened 5 years ago

IIIef commented 5 years ago

Если создать мут и ввести комментарии, то информация с символами к примеру вот такими 🔥FluffyCat🔥 не будет сохраняться, а ник игрока будет скрыт в таблице.

1

CrazyHackGUT commented 5 years ago

Какая-то нездоровая вещь. Я правильно понимаю, что строка с огоньками в данном случае - это никнейм? В базе он тоже не записался?

IIIef commented 5 years ago

Да, все правильно. Раньше всякие такие ники попадались, но я не придавал этому значение, пока один игрок не обратился, а в комментарии к муту я обычно добавляю лог чата с сервака. В итоге комментарий был наполовину пуст из-за этих символов.

CrazyHackGUT commented 5 years ago

Ну, отчасти это вроде как и баг, но вроде как и фича. Поясню. У MySQL есть две разных кодировки UTF8 (если не учитывать коллации): UTF8 и UTF8MB4. Отличие заключается в том, что первая хранит символы максимум длиною в 2 байта, а вторая - 4 байта.

SourceBans использует UTF8 из-за проблем со стороны сервера: он попросту не понимает UTF8MB4 (поправочка: не понимал до SM 1.10, который пока в разработке). Смайлики как раз используют 4 байта. Не понятно пока, почему MySQL переварил строку, не смотря на такую разницу в размере символов. Обычно он ошибку выплёвывал, что записать не может, а не просто убирал значение колонки насовсем.

Возможно, с реализацией #236 переедем на UTF8MB4. Пока это не представляется возможным.

IIIef commented 5 years ago

Хорошо, будем ждать лучших времен)

CrazyHackGUT commented 5 years ago

С сегодняшнего утра в принципе производятся попытки реализовать вышеупомянутую Issue в жизнь. Так что возможно переезд не за горами.

Munoon commented 5 years ago

Привет, та-же проблема. Как вариант - можно кодировать символы юникодом, ну или просто их удалять, пока нет альтернативы.

Да, кстати, это работает не только с мутом. Сегодня пытался забанить игрока у которого в нике смайлик, думаю ты понял какой результат ;)

IIIef commented 4 years ago

Решил проблему вот таким методом) img-2020-06-07-22-11-46

Пока все нормально работает.