Как сохранить затертые символы в имени файла

Я создавал веб-сайт, на котором пользователь может загружать файлы на aws-s3, minio и azure-storage, все работает нормально,

Но когда мой клиент загружает файлы с именем, содержащим такие символы,

AAÀÃÁÆÂÅÄÞC?ÇÈEÉËÊGGIÏÎÍÌLLÑNØÓÒÔÕÖSS?Š?TÙÛÚÜÝZŽZâaaáaãA??åà??A?aäæ?????þcCCcç??c?Cc???dddÐdDddd?d?dðd?????eeeEEeeE?Eê?èëé?fƒf?fggGgGgGg?g?ggggg?g?g?ggg?h?HHh??îïíìiiiI?iiII?I??I???i?j?j?j?jJjjj?j?j?j?j?j?j?j?j?k?kKk?k?kkk?k?l?l?lllllllLlLl?lLlll?l????ñ?N????n?n?Nn??oõôOoOOoø?oò?OoóOœŒö?????qrrRrR?R????Sšs?s?s????ß?t?t?tTt?t?tTtTt™tu?UuUuUUuUuUUuuUUuUùúû?uuUUuuü?v?v?v?wwwWw?yýÿŸY?ž??z?z??~.[]{}()@!#$%^&*+|¦„®©

или подобные им, эти символы становятся головной болью, например, файл успешно загружен, но при извлечении его из источников он не отображается на HTML-странице, и отображается только поврежденное изображение.

Я преобразовал эти символы в настоящие алфавиты (например: 'Ĵ'=>'j', 'Ĉ'=>'c', 'ǎ'=>'a'), но теперь мой клиент хочет сохранить эти символы как есть, и когда пользователь загружает файл, ему нужно то же имя файла, что и при загрузке,

В бэкэнде я использую PHP, а база данных PostgreSQL,

Как я могу решить эту проблему.


person harish sharma    schedule 31.03.2017    source источник
comment
Это настоящие алфавиты, они просто не являются частью 7-битного набора символов ASCII (в основном латинского). Время узнать о кодировках текста и юникоде!   -  person Craig Ringer    schedule 31.03.2017


Ответы (1)


Вы не можете использовать эти символы в имени большого двоичного объекта. См. эта статья об именах и ссылках на большие двоичные объекты. Вы можете попробовать сохранить исходное имя в свойстве [metadata] после загрузки большого двоичного объекта и получить его при загрузке или обращении к большому двоичному объекту.

person Robin Shahan - MSFT    schedule 31.03.2017