写点什么

AWS 上传的 S3 文件重新载入的时候简体中文显示乱码

作者:HoneyMoose
  • 2022 年 1 月 06 日
  • 本文字数:529 字

    阅读完需:约 2 分钟

在我们将文件上传到 S3 后再次重新从界面中下载的时候发现上传文件的简体中文为乱码。


问题和解决


这是因为在上传的文件的时候文件的 meta 数据设置为 text。



如果是这样的话,上传的文件中的简体中文会显示为乱码。


在源代码上传中,如果使用的是 String 进行上传的话,将会默认使用 text。



尽管所有的文本中都使用了 UTF-8,但是因为这个 UTF-8 是没有 BOM 格式的,因此没有办法识别为 UTF-8 版本。


因此我们在这里需要设置 metadata 元数据。


    byte[] bytes = newsletterJSON.getBytes(StandardCharsets.UTF_8);    ByteArrayInputStream contentsAsStream = new ByteArrayInputStream(bytes);
ObjectMetadata md = new ObjectMetadata(); md.setContentType(MediaType.JSON_UTF_8.toString());
PutObjectResult putObjectResult = s3Client.putObject("com.ossez.real.estate", "kb/newsletter.json", contentsAsStream, md);
复制代码


考虑上面的代码。


在上面的代码中,我们设置了 ObjectMetadata 对象中的内容类型。


其他


另外,如果你将 String 保存为文件,然后使用 S3 的客户端从文件中读取后上传的话是没有这个问题的。


这个问题的存在就是将 String 保存在内存中的数据直接上传到 S3 上。


https://www.ossez.com/t/aws-s3/13840

用户头像

HoneyMoose

关注

还未添加个人签名 2021.03.06 加入

还未添加个人简介

评论

发布
暂无评论
AWS 上传的 S3 文件重新载入的时候简体中文显示乱码