2015-01-16 57 views
0

我爲apache2,2開發了一個delphi7 webbroker多語言應用程序。該應用程序使用Oracle xe11進行數據存儲,並使用Devart的ODAC組件與數據庫進行通信。我將Orasession組件設置爲使用Unicode。數據庫內的數據正確存儲在具有Unicode功能的數據類型列中。使用Delphi 7編寫的另一個桌面應用程序,我們可以正確地存儲,檢索和顯示數據庫的相同數據(我使用的是支持Unicode的組件)。當我想用html格式的webbroker appl顯示這些數據時,就會出現問題。我使用delphi 7(TWebResponse)提供的默認組件。所有以拉丁字符正確顯示的文本,但所有其他語言(不是拉丁語)都不是。你能告訴我我做了什麼來解決問題嗎?無法顯示Unicode字符的Delphi7 webbroker應用程序

+0

非拉丁字符完全顯示還是顯示不同的東西(例如?而不是ä)?生成的html中指定的字符集是什麼?字符如何實際編碼? – Chris

+0

嗯非拉丁字符顯示但不正確,例如字符Ü(Turtkish字母)作爲U.生成的html中的字符是utf-8。 –

回答

0

(你)是否將組件的unicode輸出編碼爲非unicode能力(Ansi)TWebResponse.Content字符串?

我猜系統代碼頁不包含Ü(可能與德國Umlautü - > U + 00DC相同)並且您正在使用隱式轉換爲(Ansi)的字符串,該字符串採用最佳映射。

至少在2006年德爾福可以/必須使用

function Utf8Encode(const WS: WideString): UTF8String; 

在system.pas(UTF8字符串是一個字符串 - 在同一單元中定義)。據我所知,德爾福7中也有這個功能。

+0

謝謝你的回答,當我將數據庫的內容傳遞給Twebresponse時,我使用Utf8Encode:Response.content:= utf8Encode(ff)其中ff是一個寬字符串。 –

+0

對不起,現在我沒有其他想法了。你是否在你傳遞給utf8Encode的寬字符串中檢查了特殊字符(例如調試器中的內存轉儲或mem視圖)?也許它已經被「摧毀」過。 – Chris

+0

嗯,我改變了編譯器,並轉爲Delphi XE7,使用相同的代碼,問題依然存在。沒有正確顯示unicode字符。我製作了另一個桌面應用程序,使用相同的組件連接到oracle數據庫,結果很好。存儲在數據庫中的每種語言的所有文本都顯示完美。我說Delphi xe7確實支持unicodes。我現在試着找到一個解決方案 –