You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将含非ASCII字符的内容从内存上传至GCS出现乱码问题

解决GCS上传非ASCII字符乱码问题

你的问题出在没有为GCS对象指定正确的字符编码元数据。content-encoding是用于设置压缩格式(比如gzip)的,和字符编码无关,所以修改它不会解决乱码问题。

解决方案

在调用save方法时,显式设置Content-Type元数据,指定字符集为utf-8,这样客户端读取文件时就会用UTF-8解码,避免乱码。

修改后的代码:

const uploadToGCS = async (destFileName, html, objectPrefix) => {
  const storage = new Storage()
  try {
    await storage
      .bucket(BUCKET_NAME)
      .file(destFileName)
      .save(Buffer.from(html, "utf-8"), {
        metadata: {
          contentType: 'text/html; charset=utf-8' // 根据文件类型调整,比如text/plain; charset=utf-8
        }
      })
    console.log(`uploaded ${destFileName} to ${BUCKET_NAME}.`)
  } catch (err) {
    console.error(err)
  }
}

说明

  • 如果你的文件不是HTML,而是纯文本,把contentType改成text/plain; charset=utf-8即可,可根据实际文件类型调整对应MIME类型。
  • GCS默认不会自动添加字符集信息,必须显式指定,否则客户端会使用系统默认编码(通常是ISO-8859-1)解析,导致非ASCII字符乱码。

内容的提问来源于stack exchange,提问作者kyuden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:32:02