【发布时间】:2020-05-06 14:29:36
【问题描述】:
我试图使用 Indy 为某种网页制作自己的网络服务器。在我的母语中,我经常使用 'Ő' 和 'Ű' 字符,这很好,但由于某种原因,在服务器将 html 文件发送到浏览器后,这些字符被替换为 'O' 和'你'。我已经烦了一个星期了,我不知道为什么会这样。我需要在服务器上设置什么,才能正确发送页面?感谢您的帮助!
【问题讨论】:
-
您需要对您的网页进行UTF8编码,并声明该网页包含UTF8。
-
如何声明网页包含UTF8?我需要使用什么元数据?
-
我已经尝试了其中提到的一些解决方案,但它们没有帮助。另外,我在服务器上工作,而不是在客户端上。
-
@KissKonrád 您正在将文件数据读入
String的ContentText,从UTF-8 转换为UTF-16。但是您并没有告诉 Indy 在传输到 Web 浏览器时将ContentText转换回 UTF-8,或者告诉 Web 浏览器文本是 UTF-8。由于您从磁盘提供文件,请考虑使用ContentStream而不是ContentText,例如:AResponseInfo.ContentType := 'text/html; charset=utf-8'; AResponseInfo.ContentStream := TIdReadFileExclusiveStream.Create(Pages[I].FileName);
标签: delphi utf-8 indy indy10 delphi-10.3-rio