Pregunta

Tengo un servicio RESTful WCF que acepta verbos GET con URL codificadas Unicode. Los caracteres Unicode se traducen de forma extraña en pequeños cuadros cuando obtengo los datos en el servidor.

¿Hay algo que debo decirle al contrato de servicio que haga para que Unicode UrlEncoded Gets se traduzca en buenas cadenas?

Aquí está mi contrato:

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

Aquí hay una muestra del Unicode que paso: % FF% FE% 22% 00O% FF% FE% 20% 00King% FF% FE% 20% 00of% FF

Obtengo " Rey " y " de " ok, pero el resto son pequeños de la cadena son pequeños cuadrados.

¿Tiene que ser un problema de decodificación?

¿Fue útil?

Solución

Lo que está pasando parece extraño: parece contener UTF-16 para el " carácter con marcas de orden de bytes . Es casi seguro que es un problema, por lo que se parece más a un problema con la codificación de la entrada.

Por lo general, UTF-8 se usa para URL, ya que esto se adapta mucho mejor al protocolo (no es necesario escapar de todos los bytes NUL en ASCII puro). Es probable que esto sea lo que su servicio espera, por lo que no se decodifica correctamente (ya que% FF% FE no es válido UTF-8).

Otros consejos

Examine los caracteres usando el Fragmento [i] para ver cuáles son los caracteres reales. Eso eliminará la variable de lo que puede estar mostrando el depurador u otro método de salida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top