TIdHTTPServer 改变 HTML

Jer*_*dge 2 html delphi formatting indy httpserver

我正在使用TIdHTTPServer来托管大量现有 HTML 文件。但是,我遇到一个问题,它返回更改后的 HTML。主要是,双引号 ( \xe2\x80\x9c) 被替换为乱码,例如\xc3\xa2\xe2\x82\xac\xc5\x93. 直接从 Edge 中的文件系统查看 HTML 文件显示得很好,但通过此 Indy HTTP 服务器提供服务时相同的页面/文件会被更改。

\n

我通过TFileStream如下方式返回文件:

\n
    FS:= TFileStream.Create(FN, fmOpenRead);\n    AResponseInfo.ContentStream:= FS;\n\n    FE:= LowerCase(ExtractFileExt(FN));\n    if FMime.IndexOfName(FE) >= 0 then\n      CT:= FMime.Values[FE]\n    else\n      CT:= \'application/octet-stream\';\n\n    AResponseInfo.ContentType:= CT; //text/html in this case\n
Run Code Online (Sandbox Code Playgroud)\n

原始 HTML 文件如下:

\n
<p>\xe2\x80\x9c<strong>Y</strong>\xe2\x80\x9d = Consigned</p>\n
Run Code Online (Sandbox Code Playgroud)\n

...看起来像这样:

\n

正确的格式

\n

但是当通过 Indy 提供服务时,HTML 具有以下内容:

\n
<p>\xc3\xa2\xe2\x82\xac\xc5\x93<strong>Y</strong>\xc3\xa2\xe2\x82\xac = Consigned</p>\n
Run Code Online (Sandbox Code Playgroud)\n

...看起来像这样:

\n

格式不正确

\n

出了什么问题,我该如何解决?

\n

Jer*_*dge 5

我刚刚想通了 - 我需要设置字符集:

AResponseInfo.CharSet := 'utf-8';
Run Code Online (Sandbox Code Playgroud)