我正在编写一个多语言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;
webbrowser中的结果是所有未被PageProducer插入但已经存在于htmltemplate文件中的非拉丁字符(已声明为utf-8)被其他不正确的字符替换,该文本为由PageProducer插入并从数据库中重新检索也没有正确显示,但添加到上面代码中显示的内容响应中的额外标签Label1fromDB和Label2fromDB正确显示,并且在htmltemplate中也有相同的字符。
现在,当我省略声明
时Response.ContentType := 'text/html; charset=UTF-8'
htmltemplate的内容是正确的diplaying但所有其他文本,由PageProducer填充的文本和两个标签Label1fromDB和Label2fromDB不正确
为了能够通过网络经纪人提供unicode多语言内容,您能否帮我确定问题所在以及我该怎么做?
答案 0 :(得分:0)
您遇到了不同Unicode编码的问题。
PageProducer.Content
和Response.Content
都是UTF16
个编码字符串。您的htmltemplate
编码在UTF8
中,PageProducer
未正确解释。
最有可能原因是htmltemplate
文件开头没有UTF8 BOM
,而PageProducer
会将该文件编码解释为默认ANSI
。如果是这样,添加UTF8 BOM
可以解决您的问题。