Pregunta

Estoy usando un servicio web para pasar información de un montón de páginas .asp antiguas a una base de datos. El problema es que usando httpGet, necesito codificar la información para que pueda pasarse de manera segura.

Todo funciona como un sueño, excepto por el hecho de que las letras escandinavas como & # 228; & # 246; y & # 229; por ejemplo salir como cuadrados. Ahora ni siquiera sé si esto tiene que ver con la configuración de idioma IIS de la empresa (no puede tocarlos) o algo así, pero me pregunto si hay una manera de obligar a la página asp a usar una codificación específica, y luego obligar al servicio web asp.net a decodificar con el mismo conjunto de caracteres, sin ningún tipo de configuración del servidor entre tener la oportunidad de mezclarlo todo

Traté de mirar alrededor, pero no encontré ningún ejemplo claro de cómo puedes hacer esto. Por favor, mantenga las respuestas simples, solo soy un principiante en prácticas aquí. ¡Gracias por la ayuda!

Editar: Disculpas No incluyó el código porque era tan simple que no pensé que revelaría nada de todos modos. Aquí:

.asp

function loginfo()
   Dim text
   text = "ääböö"
   text = Server.URLENCODE(text)

   message = "http://server1/logger_webservice/service.asmx/test_Event?" & _
            "userID=" & userID
   Set objRequest = Server.createobject("MSXML2.XMLHTTP")

   With objRequest
   .open "GET", message, False
   .setRequestHeader "Content-Type", "text/xml"
   .send
   End With

   loginfo = objRequest.responseText
end function

servidor web:

<WebMethod()> _
Public Function test_Event(ByVal userId As String) As Boolean
   Dim kirj As StreamWriter
   kirj = File.CreateText("C:\Inetpub\server1\Logger_WebService\test_logEvent.txt")

   userId = Server.UrlDecode(userId)

   kirj.WriteLine("userId = " & userId)
   kirj.Close()
   kirj.Dispose()
End Function

De todos modos, gracias por la ayuda. Lo investigaré más, pero como de costumbre, el estrés y las prisas me obligan a seguir adelante. Escribí un código simple para cifrar las letras escandinavas más utilizadas manualmente, y las descifré en el servidor web. Funciona bien hasta ahora, solo espero que no haya ninguna complicación. Solo quería las letras finlandesas básicas & # 228 ;, & # 246; y & # 229; de todas formas. :)

Simplemente pensé que había algún método fácil para forzar la codificación a un conjunto de caracteres específico que simplemente no pude encontrar. Tienden a ser terribles para encontrar información por mi cuenta.

¿Fue útil?

Solución

Sin profundizar en el código, no puedo darte un " aquí está en la línea X " respuesta, pero el problema con el que está lidiando es el de la codificación. Hay múltiples formas de codificar cadenas, desde ASCII a UTF-8 hasta Unicode completo. Lo que esto significa es que forzar la codificación Unicode completa podría resolver su problema.

Para hacer esto, puede crear explícitamente sus transmisiones (y / o lectores / escritores) con una codificación. El método es diferente para diferentes tipos de objetos, y al no conocer su código, no puedo darle una respuesta explícita.

Sin embargo, con ASP, es posible que aún obtenga basura. Y, ha pasado tanto tiempo desde que jugué con ASP clásico, que tendría que cavar para obtener una respuesta allí. Afortunadamente, parece que tienes una forma de probar el ASP para asegurarte de que los caracteres correctos están llegando, así que prueba. Si funciona, concéntrese en el servicio web.

Otros consejos

Esta pregunta reciente que le hice arroja más luz sobre este tipo de problema con UrlEncoding:

/ questiones / 696659 / why-is-this-being-in-my-c -strings-194163

Puede resultar útil para usted u otras personas que tengan este problema.

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