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

我正在构建一个 GO 应用程序,我想通过 http 服务器从缓冲区输出一个 cvs 字符串。


我将其放入 csv 缓冲区:


var buffer bytes.Buffer

resp := 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”。


任何想法,我已经在这个项目上呆了一个星期?


呼啦一阵风
浏览 116回答 1
1回答

不负相思意

问题不在 Go 中,而在 Excel 中。保存文件时,数据以 UTF-8 编码的信息会丢失,因为保存的文件没有编码属性。因此 Excel 将只看到计划数据并且没有关于编码的信息。有几个技巧可以让 Excel 做出正确的猜测,比如在文件开头放置正确的字节顺序标记 (BOM)。请参阅是否可以强制 Excel 自动识别 UTF-8 CSV 文件?. 但仅charset=utf-8在 HTTPContent-type标头中指定将无济于事,因为 Excel 无法获取此信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go