我在测试 golang 网络应用程序时遇到了问题。在部署的版本中,nginx 位于应用程序的前端并显式设置,charset utf8;以便所有文本内容类型都附加一个字符集声明。在测试中,我直接点击了 golang 应用程序,这里的内容类型没有字符集集。这在尝试为d3 之类的库提供服务时会导致问题,该库具有以下行:var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;因为 golang 没有指定字符集,所以这些在 chrome 中呈现为:var ε = 1e-6, ε2 = ε * ε....让 golang http 服务器在 HTTP 标头上输出 charset=utf8 声明的最佳方法是什么?
1 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
FileServer 调用mime.TypeByExtension来获取内容类型。如果没有为扩展注册类型,则 FileServer 调用http.DetectContentType从文件的内容中猜测类型。
如果文本/内容类型未指定字符集参数,则 mime 包会自动将 'charset=utf-8' 参数添加到内容类型。
要调试此问题,请检查系统 mime.types 文件是否为文件扩展名指定了内容类型以及 charset 参数是否为“charset=utf-8”或未设置 charset 参数。
如果系统 mime.types 条目丢失或不正确,则调用mime.AddExtensionType以覆盖系统设置。这可以在提供任何内容之前调用一次。
- 1 回答
- 0 关注
- 156 浏览
添加回答
举报
0/150
提交
取消