上传到S3的文本文件编码奇怪吗?

时间:2014-03-14 10:56:07

标签: encoding amazon-s3

这是最奇怪的错误,我甚至不知道从哪里开始理解错误。

S3一直运作良好,直到有一天(昨天)它突然编码上传到奇怪字符的任何文本文件。每当文本文件具有Å,Ä,Ö或任何其他UTF-8可比较但没有英文字符时,文本文件就会混乱。我尝试使用各种客户端以及AWS的Web界面进行上传。上传顺利,然后我下载文件,它搞砸了。我已经尝试将它下载到我的Mac上,我尝试将它下载到带有Linux的Raspberry上。同样的错误。

Amazons S3服务器是否有任何编码?!

7 个答案:

答案 0 :(得分:8)

我遇到了同样的问题,我通过在属性中添加-moz-transform: rotate(270deg) translate(x, 0) scale(x) -ms-transform: rotate(270deg) translate(x, 0) scale(x) transform-origin: 0 0 来解决这个问题 - >文件

的元数据

enter image description here

答案 1 :(得分:4)

您可以在S3控制台的文件中显式设置“Content-Type:text / plain; charset = utf-8”。

这将告诉S3作为文本。

答案 2 :(得分:1)

对于那些使用boto3(python 3)上传且具有奇怪字符而不是强调字符的用户(例如葡萄牙语和法语),Toni ChazSony Kadavan'的答案给了我修复的提示。调用put_object时,在ContentType参数上添加“; charset = utf-8”足以正确显示。

content_type="text/plain;charset=utf-8"
bucket_obj.put_object(Key=key, Body=data, ContentType=content_type)

答案 3 :(得分:1)

在.html文件的<meta charset="utf-8" />中添加<head>可以解决我的问题。

答案 4 :(得分:0)

不确定原因,但索尼Kadavan的答案在我的案例中不起作用。

而不是:

  

Content-Type:text / plain;字符集= UTF-8

我用过:

  

Content-Type:text / html;字符集= UTF-8

这似乎有效。

答案 5 :(得分:0)

在我的问题中,我也从UFT8的文件系统读取文件时遇到问题,因此在添加

之前,我在s3中得到了错误的文件编码。
InputStreamReader isr = new InputStreamReader(fileInputStream, "UTF8");

代替

InputStreamReader isr = new InputStreamReader(fileInputStream);

也请注意这个可能的问题

答案 6 :(得分:-3)

如果您的数据包含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