私は、SOAPリクエストを解析する必要があるホームプロジェクトでいくつかの問題を経験しています。SOAPはgSOAPで生成され、デンマーク語の文字「æøå」などの特殊文字を含む文字列パラメーターを含みます。
gSOAPは、デフォルトでUTF-8エンコーディングを使用してSOAPリクエストを作成しますが、特殊文字をraw形式(つまり、特殊文字「æ」のバイトC3A6)で送信する代わりに、文字ハッシュ参照(つまり、&#)と呼ばれるものを送信します。 195;¦)。
とにかく受信ペイロードがUTF-8エンコード(Content-Type:text / xml; charset = utf-8)としてマークされていることがわかるので、gSOAPがこのようにする理由を完全には理解していませんが、これは別です質問(私は思う)。
とにかく、gSOAPはおそらくトランスポートルールに従っていると思いますか、それとも何ですか?
xml.dom.minidom.parseString()を使用してPythonでgSOAPからの要求を解析すると、要素値がユニコードオブジェクトとして取得されますが、文字ハッシュ参照はUTF-8文字コードとしてデコードされません。文字ハッシュ参照をエスケープ解除しますが、後で文字列をデコードしません。最後に、UTF-8エンコーディングのUnicode文字列オブジェクトがあります。
したがって、文字列「æble」がXMLに含まれている場合、リクエストでは次のようになります。
"æble"
XMLを解析した後、DOMテキストノードのデータメンバーのUnicode文字列は次のようになります。
u'\xc3\xa6ble'
私はそれがこのように見えることを期待します:
u'\xe6ble'
私は何が間違っているのですか?解析する前にSOAPXMLのエスケープを解除する必要がありますか、それとも他の場所で解決策、おそらくgSOAPを探す必要がありますか?
前もって感謝します。
よろしくJakobSimon-Gaarde