Biztalk調用SOAP Web服務時發生問題。來自一個特定系統的Web服務似乎並不總是在Content-Type響應頭中包含「字符集」屬性。在這種情況下,字符集被解釋爲Windows-1252編碼,而不是UTF-8。從Biztalk調用的webservices中的字符集編碼問題
即使缺少「charset」屬性,來自Web服務器的響應實際上是UTF-8編碼。所以我的問題是,如果在服務的HTTP響應頭中沒有指定charset時,是否有可能告訴Biztalk UTF-8應該用作默認字符集。
只是進一步明確:如果下面的頭從Web服務返回 ,Biztalk的正確解釋的字符集:
Content-Type: text/xml; charset=UTF-8
但是字符集部分缺失時,Biztalk的回落在Windows-1252編碼和一些國際字符亂碼:
Content-Type: text/xml
我知道最簡單的解決辦法是解決Web服務總是返回UTF-8字符集屬性,但可悲的是,我們有過SER沒有控制惡意軟件和供應商不會很快發佈修復程序。
我們嘗試過的另一個修補程序是在IIS中使用重寫來重寫響應標頭。這可以正常工作,除非服務返回大量數據。在這種情況下,IIS將使用分塊編碼,而重寫引擎似乎將來自Web服務的輸出進行雙重塊編碼,從而導致輸出結果被破壞。
我到目前爲止工作的唯一解決方案是使用Apache Web服務器作爲代理,並使用Apache重寫頭。這是有效的,但是由於它引入了額外的開銷並且相當噁心,所以我們寧願在現有的端點上解決問題。目前Biztalk結束是我們唯一可以進行更改的人員。
我希望任何人都可以幫助我。
正如其他人的評論我很驚訝的是,BTS將其視爲1252,因爲它通常默認爲UTF-8。你能詳細說明你如何以及在哪裏看到這個問題?通常BTS可以通過編碼來引導,以通過XMLNORM屬性來使用/假設,但究竟如何適用於您的場景取決於詳細信息,即消息流 – 2010-12-21 16:29:23