При работе с именами файлов в формате UTF-8 на AWS s3 bucket, я обнаружил, что некоторые из указанных имен файлов( в ссылке на файл на S3 bucket) могут отличаться от тех же имен файлов, которые были процитированы кодом моего приложения python ( i’M using Boto library). Как я обнаружил, они отличаются из-за различных форм нормализации unicode, и проблема уходит после использования unicodedata.нормализовать .
Однако я не нашел никакой информации о форме нормализации, которая используется AWS (NFC
,NFKC
, NFD
или NFKD
), Поэтому я буду очень признателен за любое предложение trasted source, который предоставляет эту информацию, спасибо.
Похоже, что S3 не применяет никакой нормализации. Если я загружаю (с помощью веб-консоли S3) файл с именем unicode (например, Ärende.txt) в S3 с Mac и снова из Windows, я закончу с двумя файлами в S3. Они выглядят одинаково в консоли S3, но они считаются различными S3, потому что кодировка имени различна.
Вы должны будете точно рассмотреть, как это влияет на ваше приложение (пользователей) и настроить соответствующим образом. Например, если ваши пользователи могут переключаться между средами (Mac vs Windows vs Linux) и ожидать согласованного кроссплатформенного поведения, то, похоже, вам придется нормализовать имена самостоятельно. Если ваши пользователи работают с одной платформы последовательно, то вам не нужно будет заботиться, скорее всего.