質問

UnicodeでエンコードされたURLでGET動詞を受け入れるRESTful WCFサービスがあります。サーバーでデータを取得すると、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

「王様」を得る; and" of"わかりましたが、残りは文字列の小さな部分で、小さな四角です。

デコードの問題になりますか??

役に立ちましたか?

解決

渡すものは奇妙に見えます:"にUTF-16が含まれているようです文字バイトオーダーマーク付き。これはほぼ確実に問題であるため、入力のエンコードに関する問題のように見えます。

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

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top