gpt4 book ai didi

delphi - 在 Delphi 中将非 ASCII 字符获取到 WebBroker 响应中

转载 作者:行者123 更新时间:2023-12-02 16:14:45 24 4
gpt4 key购买 nike

我有一个包含 nvarchar 数据的 MS SQL Server 数据库,特别是其中包含“★ABC★”的数据字段。我的 Delphi 桌面应用程序显示得很好,但来自 Delphi XE4 中使用 TDataSetTableProducer 生成响应的 WebBroker 应用程序的相同数据不起作用。这是简单的示例代码:

procedure TWebModule1.WebModule1TestAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
Response.ContentEncoding := 'text/plain; charset="UTF-8"';
Response.Content := '<!DOCTYPE html>'
+ '<html>'
+ '<body>'
+ '<p> ★ABC★ </p>'
+ '</body>'
+ '</html>'
end;

在网络浏览器中查看时,结果是“?ABC?”。我已经尝试了很多方法(包括 UTF-16 和在响应前添加 Char($FEFF) 前缀),但没有任何帮助。正确的做法是什么?

最佳答案

'文本/纯文本; charset="UTF-8"' 不是 Response.ContentEncoding 属性的有效值。您需要将其放入 Response.ContentType 属性中。另外,它应该使用 text/html 而不是 text/plain:

Response.ContentType := 'text/html; charset="UTF-8"';

如果浏览器仍然无法正确显示数据,您可能必须使用 Response.ContentStream 属性而不是 Response.Content 属性,因此您可以自己编码UTF-8数据:

procedure TWebModule1.WebModule1TestAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
Response.ContentType := 'text/html; charset="UTF-8"';
Response.ContentStream := TStringStream.Create(
'<!DOCTYPE html>'
+ '<html>'
+ '<body>'
+ '<p> ★ABC★ </p>'
+ '</body>'
+ '</html>',
TEncoding.UTF8);
end;

关于delphi - 在 Delphi 中将非 ASCII 字符获取到 WebBroker 响应中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29068253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com