4

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

4

1 回答 1

5

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

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

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

  2. 您可以将编码嵌入到文档本身中,如此所述。例如,您可以添加<meta charset="UTF-8">文档head,浏览器应该使用它来决定编码。

于 2013-10-13T02:17:59.767 回答