Encoding 上传到S3的文本文件编码奇怪?
这是最奇怪的错误,我甚至不知道从哪里开始理解哪里出了问题 S3一直工作得很好,直到有一天(昨天),它突然对上传到奇怪字符的任何文本文件进行了奇怪的编码。每当文本文件包含Å、Ä、Ö或任何其他UTF-8可比字符,但没有英文字符时,文本文件就会出错。我尝试过使用各种客户端以及AWS的web界面上传。上传很顺利,然后我下载了文件,结果搞砸了。我试着把它下载到我的Mac上,我试着把它下载到一个装有Linux的树莓上。同样的错误Encoding 上传到S3的文本文件编码奇怪?,encoding,amazon-s3,Encoding,Amazon S3,这是最奇怪的错误,我甚至不知道从哪里开始理解哪里出了问题 S3一直工作得很好,直到有一天(昨天),它突然对上传到奇怪字符的任何文本文件进行了奇怪的编码。每当文本文件包含Å、Ä、Ö或任何其他UTF-8可比字符,但没有英文字符时,文本文件就会出错。我尝试过使用各种客户端以及AWS的web界面上传。上传很顺利,然后我下载了文件,结果搞砸了。我试着把它下载到我的Mac上,我试着把它下载到一个装有Linux的树莓上。同样的错误 Amazons S3服务器有任何编码吗 如果数据包含非ASCII多字节字符(如
Amazons S3服务器有任何编码吗 如果数据包含
非ASCII多字节字符(如中文或西里尔文字符)
,则必须将数据加载到VARCHAR
列。VARCHAR
数据类型支持四字节UTF-8字符,但CHAR
数据类型仅接受单字节ASCII字符
来源:您可以在S3控制台的文件上显式设置“内容类型:text/plain;charset=utf-8”
这将告诉S3作为文本。不确定为什么,但索尼Kadavan的答案在我的案例中不起作用 而不是: 内容类型:文本/纯文本;字符集=utf-8 我用过: 内容类型:text/html;字符集=utf-8
这似乎奏效了 我也遇到了同样的问题,我通过在文件的属性->元数据中添加
charset=utf-8
解决了这个问题
在我的问题中,我也遇到了将文件系统中的文件读取为UFT8的问题,因此在添加之前,我在s3中得到了错误的文件编码
InputStreamReader isr = new InputStreamReader(fileInputStream, "UTF8");
而不是
InputStreamReader isr = new InputStreamReader(fileInputStream);
对于那些使用boto3(python 3)上传并且使用奇怪字符而不是重音符号(例如葡萄牙语和法语)的用户,请注意这个可能的问题,,和的回答给了我修复的提示。调用put_对象时,将“charset=utf-8”添加到ContentType参数足以正确显示重音
content_type="text/plain;charset=utf-8"
bucket_obj.put_object(Key=key, Body=data, ContentType=content_type)
在.html文件的
中添加
为我解决了这个问题。是的,这对我很有效。使用s3cmd工具,我添加了标志--encoding=UTF-8--addencoding exts=js,html
,它成功了。谢谢@SonyKadavan@SonyKadavan你能把你的答案贴出来吗?其他人会觉得它很有帮助。像这个问题一样,我们到底应该在哪里设置它呢?在我使用aws sdk ruby库的例子中,我做了:bucket.object(“myfile.txt”).put(body:“unicöde cöntänt”,content_type:“text/plain;charset=utf-8”)
如果是CSV,它会转换成二进制/八进制格式,有人知道吗“text/csv;charset=utf-8”
@pootzko select file/folder>actions>change metadataredshift不是S3在我的例子中它也没有帮助,但是在从文件系统读取文件的过程中设置编码对我有帮助。我的s3Bucket中没有元数据部分:(它什么时候改变?也许你需要从按钮添加它。)“+添加元数据”@albatross