Problema classico di Asp a Asp.Net urlEncoding
-
10-07-2019 - |
Domanda
Sto usando un servizio web per passare informazioni da un mucchio di vecchie pagine ASP a un database. Il problema è che usando httpGet, devo codificare le informazioni in modo che possano essere passate in modo sicuro.
Tutto funziona come un sogno, tranne per il fatto che lettere scandinave come & # 228; & # 246; e & # 229; per esempio escono come quadrati. Ora non so nemmeno se questo abbia a che fare con le impostazioni della lingua IIS dell'azienda (non riesco a toccarle) o qualcosa del genere, ma mi chiedo se c'è un modo per forzare la asp-page a utilizzare una codifica specifica e quindi forzare il servizio web asp.net a decodificare con lo stesso set di caratteri, senza qualsiasi tipo di impostazione del server tra l'ottenere la possibilità di mescolare tutto?
Ho provato a guardarmi intorno, ma non ho trovato esempi chiari di come puoi farlo. Per favore, mantieni le risposte semplici, sono solo un principiante al tirocinio qui. Grazie per l'aiuto!
Modifica Scuse. Non includeva il codice perché era così semplice che non pensavo che avrebbe rivelato comunque nulla. Qui:
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
web server:
<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
Comunque, grazie per l'aiuto. Lo esaminerò di più, ma come al solito lo stress e la fretta mi stanno costringendo ad andare avanti. Ho scritto un semplice codice per crittografare manualmente le lettere scandinave più utilizzate e decrittografarle nel server Web. Funziona bene finora, spero solo che non ci siano complicazioni. Volevo solo le lettere finlandesi di base & # 228 ;, & # 246; e & # 229; Comunque. :)
Ho pensato che esistesse un metodo semplice per forzare la codifica su un set di caratteri specifico che non riuscivo a trovare. Tendo ad essere terribile nel trovare informazioni da solo.
Soluzione
Senza scavare nel codice, non posso darti un " eccolo qui sulla linea X " risposta, ma il problema che stai affrontando è quello della codifica. Esistono diversi modi per codificare le stringhe, da ASCII a UTF-8 a Unicode completo. Ciò significa che il potenziamento della codifica Unicode completa potrebbe risolvere il tuo problema.
Per fare ciò, puoi creare esplicitamente i tuoi flussi (e / o lettori / scrittori) con una codifica. Il metodo è diverso per diversi tipi di oggetti e, non conoscendo il tuo codice, non posso darti una risposta esplicita.
Con ASP, potresti comunque ottenere spazzatura. Ed è passato così tanto tempo da quando ho giocato con l'ASP classico, avrei dovuto scavare per ottenere una risposta lì. Fortunatamente, sembra che tu abbia un modo per testare l'ASP per assicurarti che arrivino i caratteri corretti, quindi prova. Se funziona, concentrati sul servizio web.
Altri suggerimenti
Questa recente domanda che ho posto chiarisce ulteriormente questo tipo di problema con UrlEncoding:
/ questions / 696659 / why-is-this-comparendo-in-my-c -strings-194163
Potrebbe rivelarsi utile per te o per gli altri colpire questo problema.