Este es un tiro en la oscuridad, y me disculpo de antemano si esta pregunta suena como las divagaciones de un loco.C#, UTF-8 y caracteres de codificación
Como parte de una integración con un tercero, necesito UTF8-codificar cierta información de cadena utilizando C# para poder enviarla al servidor de destino a través de una forma multiparte. El problema es que están rechazando algunos de mis envíos, probablemente porque no estoy codificando sus contenidos correctamente.
En este momento, estoy tratando de ver cómo un guion o guión - no puedo decir cuál es simplemente al mirarlo - es recibido o interpretado por el servidor de destino como [email protected]~S
(sí, eso es una cadena de 5 caracteres y no es su navegador glitching). Y desafortunadamente no tengo una comprensión lo suficientemente exhaustiva de Encoding.UTF8.GetBytes()
para saber cómo usar la matriz de bytes para comenzar a identificar dónde podría estar el problema.
Si alguien puede proporcionar algún consejo o sugerencia, lo agradecería mucho. Hasta ahora, mi único amigo ha sido MSDN, y no mucho de uno en eso.
ACTUALIZACIÓN 1: Después de un poco más de excavación alrededor, he descubierto que el uso de System.Web.HttpUtility.UrlEncode()
para codificar un carácter DASH EM ("-") se HEX-encode en "% e2% 80% 94".
Actualmente estoy enviando esta información en un mensaje de HttpWebRequest
, con contenido de "application/x-www-form-urlencoded" - ¿Esto podría estar causando el problema? Y si es así, ¿cuál es la forma correcta de codificar una serie de pares de nombre-valor cuyos valores pueden contener caracteres Unicode, de forma que un servidor que lo espera comprenda una solicitud UTF-8?
A partir de ese resultado, supongo que podría estar codificando ascii el resultado de la codificación utf8 de un em dash. – Joshua
Incluso con la codificación incorrecta, es muy poco probable que un guión de 1 carácter se traduzca en una secuencia de 5 caracteres. Probablemente no sea solo un problema de codificación. –
@Joshua: Creo que estás cerca del corazón del problema. Acabo de agregar una actualización a mi publicación original con más información. –