我有一個問題,我不知道如何解決。Delphi indy10 http服務器和ExtJS表單提交
我有一個Indy10 HTTP服務器。我在許多應用程序中都使用了Indy9和Indy10 HTTP服務器,並且從來沒有遇到任何問題。但現在我正在使用Indy10 HTTP服務器和ExtJS JavaScript RAI框架。
問題是當我提交包含非ansi字符的數據時。例如,當我在1250代碼頁(斯洛維尼亞語,克羅地亞...)中提交信件「č」時,我在Indy的「未解析的參數」 - >「%C4%8D」中獲得以下內容。這是utf-8編碼中「č」字母的正確十六進制表示形式。我所有的網頁都是utf-8,從來沒有任何問題向Indy提交表單數據。我調試了代碼,發現我實際上得到了如下這樣的字節序列:[37,67,52,37,56,68]。這是字符串「%C4%8D」的字節表示形式。但是,當然,Indy不能正確地將其編碼爲UTF-16。舉個例子。實際的表單字段:
FirstName=črt
submited時候出來是這樣的:
FirstName=%C4%8Drt
我不知道如何解決這個問題。我看了ExtJS論壇,但是這個話題沒有任何內容。有人知道這種問題嗎?
編輯:
如果我編碼PARAMS廣告JSON他們正確地到達。我也嘗試URL解碼參數,但結果不正確。也許我錯過了什麼。我會再看一遍。是的,似乎ExtJS的URL編碼PARAMS
EDIT2:
好吧,我發現更多。我比較了發佈數據的實際內容。它是這樣的:
Delphi 2006 (Indy10): FirstName=%C4%8D
Delphi 2010 (Indy10): FirstName=%C4%8D
在這兩種情況下,未分析的參數是相同的。我有ParseParams打開並在BDS2006 他們正確解析,但在2010年他們不是。這是Indy10與德爾福組合。這個版本有錯誤嗎?或者我做錯了什麼?
EDIT3:
我下載了最新的每日構建OD Indy10。仍然是同樣的問題。
EDIT4:
我不得不接受我自己的答案。
即使在VCL的Ansi版本中,TIdHTTPServer的解碼功能也存在尚未解決的已知問題。 – 2010-03-05 01:39:14
感謝您的信息。我擔心我做錯了什麼:) – Runner 2010-03-05 07:01:21