0

UnicodeでエンコードされたURLを持つGET動詞を受け入れるRESTfulWCFサービスがあります。サーバーでデータを取得すると、Unicode文字が奇妙なことに小さなボックスとして変換されます。

Unicode UrlEncoded Getsを適切な文字列に変換するために、サービスコントラクトに指示する必要があることはありますか?

これが私の契約です:

[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/Document/{Fragment}", RequestFormat = WebMessageFormat.Xml)]
Message GetDocumentFromSearchResult(string Fragment);

これが私が渡したUnicodeのサンプルです:%FF%FE%22%00O%FF%FE%20%00King%FF%FE%20%00of%FF

「King」と「of」は大丈夫ですが、残りの文字列は小さな正方形です。

お奨めはデコードの問題ですか?

4

2 に答える 2

1

あなたが渡しているものは奇妙に見えます: Byte Order Marks を持つ" 文字の UTF-16 が含まれているようです。これはほぼ確実に問題であるため、入力のエンコーディングに問題があるように見えます。

通常、URL には UTF-8 が使用されます。これは、UTF-8 の方がプロトコルにより適しているためです (純粋な ASCII ですべての NUL バイトをエスケープする必要はありません)。これはおそらくサービスが予期しているものであり、正しくデコードされません (%FF%FE は有効な UTF-8 ではないため)。

于 2009-09-19T23:50:30.183 に答える
0

Fragment [i]を使用して文字を調べ、実際の文字が何であるかを確認します。これにより、デバッガーまたは他の出力メソッドが表示している可能性のある変数が削除されます。

于 2009-09-17T00:07:27.033 に答える