为了账号安全,请及时绑定邮箱和手机立即绑定

GO 生成不正确的 UTF-8 字符,例如 ö

GO 生成不正确的 UTF-8 字符,例如 ö

Go
呼啦一阵风 2022-11-08 15:15:46
我正在构建一个 GO 应用程序,我想通过 http 服务器从缓冲区输出一个 cvs 字符串。我将其放入 csv 缓冲区:var buffer bytes.Bufferresp := csv.NewWriter(&buffer)resp.Write("Schröder")通过http服务器输出:resp.Flush()w.Header().Set("Content-Type", "text/csv; charset=utf-8")w.Write([]byte(buffer.String()))然后当我打开我的 url 时,会下载一个 csv 文件并由 Excel 打开。在该 excelsheet 中,字段值被转换为“Schröder”。任何想法,我已经在这个项目上呆了一个星期?
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

问题不在 Go 中,而在 Excel 中。保存文件时,数据以 UTF-8 编码的信息会丢失,因为保存的文件没有编码属性。

因此 Excel 将只看到计划数据并且没有关于编码的信息。有几个技巧可以让 Excel 做出正确的猜测,比如在文件开头放置正确的字节顺序标记 (BOM)。请参阅是否可以强制 Excel 自动识别 UTF-8 CSV 文件?. 但仅charset=utf-8在 HTTPContent-type标头中指定将无济于事,因为 Excel 无法获取此信息。


查看完整回答
反对 回复 2022-11-08
  • 1 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信