Delphi XE7,WebBroker 上 PageProducer 的 Unicode 显示问题
Delphi XE7,Unicode display problems with PageProducer on WebBroker
我正在编写一个多语言 WebBroker 应用程序(适用于 Apache 2.2),它显示来自 oracle 数据库的 unicode 编码数据。在用 Delphi XE7 编写的测试程序中,具有相同数据感知组件(Devart 的 ODAC)的相同数据显示正确。
我的问题出现在 WebBroker 中,当我使用 PageProducer 准备响应内容时,我遇到了一个奇怪的行为
当我在操作中使用以下代码时:
Response.ContentType := 'text/html; charset=UTF-8';
PageProducer1.HTMLFile:= htmltemplate
Response.Content :=
PageProducer1.Content+
'Label 1 ='+Label1fromDB+
' Label 2='+Label2fromDB+
'</body></html>';
Response.SendResponse;
Web 浏览器中的结果是所有非拉丁字符不是由 PageProducer 插入但已经存在于 html 模板文件中(已声明为 utf-8 with )被其他不正确的字符替换,由 PageProducer 插入并从数据库中检索的文本也没有正确显示,但是添加到内容响应中的额外标签 Label1fromDB 和 Label2fromDB 如上面的代码所示正确显示,并且具有与内部相同的字符html模板。
现在,当我省略声明时
Response.ContentType := 'text/html; charset=UTF-8'
html 模板的内容显示正确,但所有其他文本、PageProducer 填充的文本以及两个标签 Label1fromDB 和 Label2fromDB 显示不正确
你能帮我确定问题出在哪里吗?我做了什么才能通过网络代理提供 unicode 多语言内容?
您遇到了不同 Unicode 编码的问题。
PageProducer.Content
和Response.Content
都是UTF16
编码的字符串。您的 htmltemplate
编码为 UTF8
,PageProducer
未正确解释。
最可能的原因是 htmltemplate
文件开头没有 UTF8 BOM
,PageProducer
会将文件编码解释为默认 ANSI
。如果是这样,添加 UTF8 BOM
应该可以解决您的问题。
我正在编写一个多语言 WebBroker 应用程序(适用于 Apache 2.2),它显示来自 oracle 数据库的 unicode 编码数据。在用 Delphi XE7 编写的测试程序中,具有相同数据感知组件(Devart 的 ODAC)的相同数据显示正确。 我的问题出现在 WebBroker 中,当我使用 PageProducer 准备响应内容时,我遇到了一个奇怪的行为 当我在操作中使用以下代码时:
Response.ContentType := 'text/html; charset=UTF-8';
PageProducer1.HTMLFile:= htmltemplate
Response.Content :=
PageProducer1.Content+
'Label 1 ='+Label1fromDB+
' Label 2='+Label2fromDB+
'</body></html>';
Response.SendResponse;
Web 浏览器中的结果是所有非拉丁字符不是由 PageProducer 插入但已经存在于 html 模板文件中(已声明为 utf-8 with )被其他不正确的字符替换,由 PageProducer 插入并从数据库中检索的文本也没有正确显示,但是添加到内容响应中的额外标签 Label1fromDB 和 Label2fromDB 如上面的代码所示正确显示,并且具有与内部相同的字符html模板。
现在,当我省略声明时
Response.ContentType := 'text/html; charset=UTF-8'
html 模板的内容显示正确,但所有其他文本、PageProducer 填充的文本以及两个标签 Label1fromDB 和 Label2fromDB 显示不正确
你能帮我确定问题出在哪里吗?我做了什么才能通过网络代理提供 unicode 多语言内容?
您遇到了不同 Unicode 编码的问题。
PageProducer.Content
和Response.Content
都是UTF16
编码的字符串。您的 htmltemplate
编码为 UTF8
,PageProducer
未正确解释。
最可能的原因是 htmltemplate
文件开头没有 UTF8 BOM
,PageProducer
会将文件编码解释为默认 ANSI
。如果是这样,添加 UTF8 BOM
应该可以解决您的问题。