Ответ 1
У меня была такая же проблема, и я решил ее, добавив charset=utf-8
в свойствах → метаданные файла
Это самая странная ошибка, и я даже не знаю, с чего начать понимать, что неправильно.
S3 работает хорошо, до внезапно однажды (вчера) он странно кодирует любой текстовый файл, загруженный в странные символы. Всякий раз, когда текстовый файл имеет Å, Ä, Ö или любой другой UTF-8, сопоставимый, но не английский, текстовый файл перепутан. Я попытался загрузить с помощью различных клиентов, а также веб-интерфейс AWS. Загрузка идет хорошо, затем я загружаю файл, и он перепутался. Я попытался загрузить его на свой Mac, я попробовал загрузить его на малину с Linux на нем. Такая же ошибка.
Есть ли какая-либо кодировка, выполняемая серверами Amazons S3?!
У меня была такая же проблема, и я решил ее, добавив charset=utf-8
в свойствах → метаданные файла
Вы можете явно указать "Content-Type: text/plain; charset = utf-8" в файле в консоли S3.
Это будет означать, что S3 служит в качестве текста.
Не знаю, почему, но ответ от Sony Kadavan не работал в моем случае.
Вместо
Content-Type: text/plain; кодировка = UTF-8
Я использовал:
Content-Type: text/html; кодировка = UTF-8
Казалось, что это сработало.
В моей проблеме у меня возникла проблема с чтением файла из файловой системы как UFT8, поэтому я получил неправильную кодировку файла в s3, пока не добавил
InputStreamReader isr = new InputStreamReader(fileInputStream, "UTF8");
вместо
InputStreamReader isr = new InputStreamReader(fileInputStream);
пожалуйста, обратите внимание на эту возможную проблему
Для тех, кто использует boto3 (python 3) для загрузки и использует странные символы вместо акцентуации (например, на португальском и французском языках), Тони Чаз и Sony Kadavan ответы дали мне подсказку, чтобы исправить. Добавление "; charset = utf-8" к аргументу ContentType при вызове put_object было достаточно для правильного отображения акцентуации.
content_type="text/plain;charset=utf-8"
bucket_obj.put_object(Key=key, Body=data, ContentType=content_type)
Если ваши данные включают non-ASCII multibyte characters (such as Chinese or Cyrillic characters)
, вы должны загрузить данные в столбцы VARCHAR
. Тип данных VARCHAR
поддерживает четырехбайтовые символы UTF-8, но тип данных CHAR
принимает только однобайтовые символы ASCII.
Источник: http://docs.aws.amazon.com/redshift/latest/dg/t_loading_unicode_data.html