Question

J'ai un service WCF RESTful qui accepte les verbes GET avec des URL codées Unicode. Les caractères Unicode sont traduits étrangement lorsque je récupère les données sur le serveur.

Y a-t-il quelque chose que je dois dire au contrat de service à faire pour que les objets Unicode UrlEncoded Gets soient traduits en belles chaînes?

Voici mon contrat:

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

Voici un exemple de l'unicode que je transmets: % FF% FE% 22% 00O% FF% FE% 20% 00King% FF% FE% 20% 00de% FF

Je reçois " King " et " of " ok, mais le reste sont peu de la ficelle sont des petits carrés.

Faut-il être un problème de décodage?

Était-ce utile?

La solution

Ce que vous transmettez semble étrange: il semble contenir le format UTF-16 pour le " caractère avec les marques d'ordre sur le byte . Il s’agit presque certainement d’un problème, il s’agit donc plutôt d’un problème d’encodage de votre entrée.

Habituellement, UTF-8 est utilisé pour les URL, car cela s’intègre beaucoup mieux dans le protocole (inutile d’échapper à tous les octets NUL en ASCII pur). C’est probablement ce à quoi votre service s’attend. Il ne décode donc pas correctement (car% FF% FE n’est pas valide UTF-8).

Autres conseils

Examinez les caractères à l’aide de Fragment [i] pour connaître leur nature réelle. Cela supprimera la variable de ce que le débogueur ou une autre méthode de sortie peut vous montrer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top