Какая кодировка будет наиболее подходящей для хранения изображений в базе данных?
Лучшей кодировкой для хранения изображений в базе данных является `BLOB` (Binary Large Object). `BLOB` - это тип данных, который позволяет хранить большие блоки двоичных данных, таких как изображения, в базе данных. Использование `BLOB` позволяет удобно хранить изображения в базе данных, без необходимости создания дополнительной таблицы или файловой системы для хранения изображений. Также это обеспечивает легкость в управлении и доступе к изображениям прямо из базы данных. Таким образом, для хранения изображений в базе данных наиболее подходящей будет использование типа данных `BLOB`.
В базе данных, обычно, не хранят бинарные данные файлов.
Кладете на файловый сервер файл, берете путь к этому файлу и записываете в поле таблицы.
Если очень приспичило какой-то бинарник положить в поле таблицы, то для этого есть binary/varbinary type.
Но злоупотреблять возможностью записывать безразмерные данные в одно поле не стоит - намучаетесь с бекапами.
Любую. На BLOB кодировка не влияет.
Но по уму фотографии не хранят в БД. Их записывают как отдельные файлы с уникальными именами, а в базе хранят оригинальное имя файла и путь к файлу.
бинарные типы данных binary, varbinary или blob потому и бинарные, что к ним не применяются правила символьной трансляции (charset), т.е. к примеру их нельзя сортировать по алфавиту.
p.s. настоятельно рекомендую трижды подумать, зачем тебе нужно хранить изображения в базе данных, и с высокой вероятностью лучше их хранить в файлах на диске а в базе только имя файла (а можно и имена файлов привести к идентификаторам базы).
Не надо хранить бинарные файлы в БД.
В дополнение ко всему сказанному - в MySQL извлечение сохранённых бинарных файлов именно в виде файлов, а не массива байтов, тоже занятие нетривиальное. Выполняется по одному, запросом SELECT INTO DUMPFILE, да ещё и отдельно от остальных полей записи.