IIS 8.5 设置编码为 utf-8 用于静态 .txt 文件剥离换行符

IIS 8.5 setting encoding as utf-8 for static .txt files stripping line feed

我正在尝试为 IIS 8.5 网络服务器上的 .txt 静态文件设置编码。 根据我的研究,我应该将其添加到我的 web.config 文件中:

<system.webServer>
  <staticContent>
    <remove fileExtension=".txt" />
    <mimeMap fileExtension=".txt" mimeType="text/html; charset=utf-8"/>
  </staticContent>
</system.webServer>

虽然它似乎在页面以 UTF-8 格式打开 Chrome 中的 .txt 文件时工作,但它似乎去除了所有换行符并且我得到了一大块不间断的文本(代码)。

另一方面,我删除了那些行 Chrome 使用 Windows-1252 编码打开页面(这是一个问题,因为文本文件中的扩展字符也以 utf-8 编码不要出现)。但是,如果我通过 Chrome 设置手动将页面上的编码更改为 utf-8,则一切看起来都很完美,包括换行符。

我做错了什么,为什么当我在 web.config 文件中设置编码时换行符被去除?

好的,我想通了(在一个晦涩的 MSDN 页面中爬网时不小心)。

问题出在 MIME 类型的定义方式上。使用 "text/html" 时,它会从文本文件中删除 returns 回车符(我猜这与 Unix vs DOS 和 HTML 兼容性有关)。

无论如何要在 Windows/DOS 样式的文本文件中保留回车并将静态 .txt 文件的默认编码更改为 utf-8,请使用以下内容:

<system.webServer>
  <staticContent>
    <remove fileExtension=".txt" />
    <mimeMap fileExtension=".txt" mimeType="text/plain; charset=utf-8"/>
  </staticContent>
</system.webServer>

请注意,我将 "text/html" 更改为 "text/plain",这似乎完全不同。

我从这个 MSDN 网站得到了线索:Adding Static Content MIME Mappings