Delphi Indy服务器替换特定字符

Delphi Indy服务器替换特定字符,delphi,utf-8,indy,indy10,delphi-10.3-rio,Delphi,Utf 8,Indy,Indy10,Delphi 10.3 Rio,我试着用Indy做我自己的Web服务器,做一些网页。在我的母语中,我经常使用“Ő”和“Ű”字符,这很好,但由于某种原因,在服务器将html文件发送到浏览器后,这些字符会被替换为“O”和“U”。这让我烦了一个星期,我不明白,为什么这种事一直发生。我需要在服务器上设置什么,以便它正确发送页面?谢谢你的帮助 您只需要像这样定义响应的字符集: procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TI

我试着用Indy做我自己的Web服务器,做一些网页。在我的母语中,我经常使用“Ő”和“Ű”字符,这很好,但由于某种原因,在服务器将html文件发送到浏览器后,这些字符会被替换为“O”和“U”。这让我烦了一个星期,我不明白,为什么这种事一直发生。我需要在服务器上设置什么,以便它正确发送页面?谢谢你的帮助

您只需要像这样定义响应的字符集:

procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  AResponseInfo.ContentType := 'text/plain';
  AResponseInfo.CharSet := 'utf-8';
  AResponseInfo.ContentText := 'Hallo Web ŐŰ';
end;

您需要使用UTF8编码网页,并声明此网页包含UTF8。如何声明网页包含UTF8?我需要使用什么meta?检查这个,我已经尝试了一些解决方案,上面提到过,但它们没有帮助。另外,我在服务器上工作,而不是在客户机上。@kiskonrád您正在将文件数据读入
ContentText
字符串,从UTF-8转换为UTF-16。但是,在传输到web浏览器时,您没有告诉Indy将
ContentText
转换回UTF-8,也没有告诉web浏览器该文本是UTF-8。由于您正在从磁盘服务文件,请考虑使用<代码> Cordon Studio而不是<代码> Cordtext Tux/Cuff>,例如:Eng:> ActhServIf.CordTyt:= 'TeX/HTML;字符集=utf-8';AResponseInfo.ContentStream:=TIdReadFileExclusiveStream.Create(第[I]页).FileName)
我这样写字符集:
UTF-8
,而不是小写。非常感谢你!这不应该有什么区别。我用Chrome进行了测试,它不区分大小写。把内容加载到内存中并转换成字符串可能不是个好主意。最好按照Remy在评论中描述的方式使用流