Не загружается файл с иероглифами

Проблемы с установкой или работой phpBB 3.3.x? Получите помощь здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
romaamor
phpBB 3.0.7
Сообщения: 2419
Стаж: 13 лет 3 месяца
Откуда: Одесса
Благодарил (а): 636 раз
Поблагодарили: 168 раз

Не загружается файл с иероглифами

Сообщение romaamor »

Не загружается файл с иероглифами или с необычным шрифтом в названии. К примеру такие - 𝕾𝕬𝕽
Как сделать, что бы небыло такого предуприждения призагрузке таких файлов - Ошибка HTTP ?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17010
Стаж: 19 лет 2 месяца
Откуда: Красноярск
Благодарил (а): 560 раз
Поблагодарили: 1717 раз

Re: Не загружается файл с иероглифами

Сообщение rxu »

romaamor писал(а): 26.05.2025 19:48 К примеру такие - 𝕾𝕬𝕽
Это 4-хбитные символы, для хранения которых нужна кодировка utf8mb4. Она не поддерживается phpBB, используется utf8mb3 (3-хбитная).
romaamor писал(а): 26.05.2025 19:48 Как сделать, что бы небыло такого предуприждения

На самом деле, генерируется ошибка SQL

Код: Выделить всё


General Error
SQL ERROR [ mysqli ]

Incorrect string value: '\xF0\x9D\x95\xBE\xF0\x9D...' for column 'real_filename' at row 1 [1366]

SQL

INSERT INTO phpbb_attachments (physical_filename, attach_comment, real_filename, extension, mimetype, filesize, filetime, thumbnail, is_orphan, in_message, poster_id) VALUES ('2_ca99b508a06fccd0c17fd8966ef6f38f', '', '𝕾𝕬𝕽.zip', 'zip', 'application/x-zip-compressed', 4530, 1748278658, 0, 1, 0, '2')

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 1031
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 216
CALL: phpbb\db\driver\driver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 353
CALL: phpbb\db\driver\mysqli->sql_query()

FILE: [ROOT]/includes/message_parser.php
LINE: 1747
CALL: phpbb\db\driver\factory->sql_query()

FILE: [ROOT]/posting.php
LINE: 1045
CALL: parse_message->parse_attachments()

Попробовать обойти можно с помощью правки ядра или расширением, которое обработает значение $sql_ary['real_filename'] в функции parse_attachments() в includes/functions_messenger.php примерно таким образом:
$sql_ary['real_filename'] = utf8_encode_ucr($sql_ary['real_filename']) в двух местах, где идет добавление строк в таблицу вложений.
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17010
Стаж: 19 лет 2 месяца
Откуда: Красноярск
Благодарил (а): 560 раз
Поблагодарили: 1717 раз

Re: Не загружается файл с иероглифами

Сообщение rxu »

Либо более простым способом: переименовать файл перед загрузкой с использованием обычных символов.
Изображение
Аватара пользователя
romaamor
phpBB 3.0.7
Сообщения: 2419
Стаж: 13 лет 3 месяца
Откуда: Одесса
Благодарил (а): 636 раз
Поблагодарили: 168 раз

Re: Не загружается файл с иероглифами

Сообщение romaamor »

Спасибо. Чат жпт примерно такое же и говорил. Буду просить его что бы создал расширение. В код ядра лесть неохота.
rxu писал(а): 26.05.2025 20:17 Либо более простым способом: переименовать файл перед загрузкой с использованием обычных символов.
Много файлов с такими именами. Долго править.

Вернуться в «Поддержка phpBB 3.3.x»