我正在编写一个多语言WebBroker应用程序(用于Apache2.2),该应用程序显示来自oracle数据库的unicode编码数据。在用Delphi XE7编写的测试程序中,具有相同数据感知组件(Devart‘same )的相同数据正在正确显示。我的问题发生在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;was浏览器的结果是,PageProducer没有插入但已存在于same模板文件中的所有非拉丁字符(该文件已声明为utf-8 )被其他不正确的字符替换,由PageProducer插入并从数据库中检索的文本也没有正确显示,但添加到内容响应中的额外标签、Label1fromDB和Label2fromDB显示在上面的代码中,它们也正确地显示在same模板中具有相同的图形。
现在,当我省略声明
Response.ContentType := 'text/html; charset=UTF-8'text模板的内容显示正确,但所有其他文本、PageProducer填充的文本以及Label1fromDB和Label2fromDB两个标签都不正确。
你能帮我确定问题出在哪里吗?为了能够通过网络代理服务unicode多语言内容,我做了些什么?
发布于 2015-01-29 16:08:35
您对不同的Unicode编码有问题。
PageProducer.Content和Response.Content都是UTF16编码的字符串。您的htmltemplate是用UTF8编码的,PageProducer没有正确解释。
最有可能的原因是htmltemplate文件一开始没有UTF8 BOM,PageProducer会将该文件编码解释为默认的ANSI。如果是这样的话,添加UTF8 BOM可以解决您的问题。
https://stackoverflow.com/questions/28191887
复制相似问题