2009-09-16 7 views
0

J'ai un service WCF RESTful qui accepte les verbes GET avec des URL codées Unicode. Les caractères Unicode sont traduits en tant que petites boîtes étrangement quand j'obtiens les données sur le serveur.WCF Unicode UrlEncoded Ne pas arriver gentiment

Y a-t-il quelque chose que je dois dire au contrat de service à faire pour que les Unicode UrlEncoded Gets se traduisent par de belles chaînes?

Voici mon contrat:

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

Voici un échantillon du unicode je passe: % FF% FE% 22% 00o% FF% FE% 20% 00King% FF% FE% 20% 00of % FF

Je reçois "King" et "de" ok, mais le reste est peu de la chaîne sont de petits carrés.

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

Répondre

1

Qu'est-ce que vous êtes de passage dans l'air étrange: il semble contenir UTF-16 pour le "caractère avec Byte Order Marks Ceci est certainement un problème, il ressemble plus à un problème avec l'encodage de l'entrée.

Habituellement, UTF-8 est utilisé pour les URL, car cela correspond beaucoup mieux au protocole (pas besoin d'échapper tous les octets NUL en ASCII pur) .Ceci est susceptible d'être ce que votre service attend, donc il ne se décode pas correctement (comme% FF% FE n'est pas valide UTF-8)

0

Examinez les caractères à l'aide de Fragment [i] pour voir quels sont les caractères réels. Cela supprimera la variable de ce que le débogueur ou autre méthode de sortie peut vous montrer.

Questions connexes