设置' charset' golang HTTP FileServer中Content-Type标头的属性

时间:2015-08-30 21:46:25

标签: http go character-encoding

我在测试golang网络应用时遇到了问题。在部署版本中,nginx在应用程序前端显式设置charset utf8;,以便所有文本内容类型都附加了字符集声明。

在测试中,我直接点击golang应用程序,这里的内容类型没有charset集。这在尝试提供类似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 个答案:

答案 0 :(得分:4)

FileServer调用mime.TypeByExtension以获取内容类型。如果没有为扩展注册类型,则FileServer会调用http.DetectContentType来猜测文件内容的类型。

如果文本/内容类型未指定charset参数,则mime包会自动添加' charset = utf-8'内容类型的参数。

要调试此问题,请检查系统mime.types文件是否指定了文件扩展名的内容类型,并且charset参数是' charset = utf-8'或者没有设置charset参数。

如果系统mime.types条目丢失或不正确,请调用mime.AddExtensionType覆盖系统设置。这可以在任何内容提供之前调用一次。