从AWS s3网站下载时,为什么某些网页上的特殊字符会出现乱码?

Cle*_*uck 4 html amazon-s3

我们有一个浏览器扩展,允许用户将html网页和资产上传到s3,这通常很有效.我们遇到的一个问题是,对于某些网页,特殊字符, - ,',"等会出现乱码.例如,短划线' - '将在浏览器源中显示为 - 并以此方式显示.短划线是在s3 html中有' - '.这只发生在我们上传的一些网页中,包括来自堆栈溢出的问题(评论中用户名之前的破折号).s3 html文件的唯一元数据是Content-type:text/html.手动将字符编码类型设置为自动检测可以暂时修复它,但我们无法弄清楚如何永久修复它并可以使用一些帮助.

ian*_*njs 5

这很可能是因为你的连字符实际上是Unicode UTF-8 em或者是破折号,引号字符是Unicode曲线引号而不是基本的ASCII引号.例如,StackOverflow问题中的破折号似乎是破折号.

你需要告诉浏览器正确的编码,因为它试图猜测并弄错了.有几种方法可以做到这一点:

  1. 上传文件时,您可以为文件设置S3 Content-Type元数据属性text/html;charset=UTF-8.这取决于您用于上传的软件.此属性也可以在AWS控制台中设置,但如果有大量文件,这将是繁琐的.

  2. 您可以按照此处所述文档中嵌入编码.例如,你可以添加<meta charset="UTF-8">head文档和浏览器应该用它来决定的编码.