Problema clássico de urlencidação de asp para asp.net
-
10-07-2019 - |
Pergunta
Estou usando um serviço da Web para transmitir informações de um monte de páginas .asp antigas para um banco de dados. O problema é que, usando o httpget, preciso codificar as informações para que elas possam ser passadas com segurança.
Tudo funciona como um sonho, exceto pelo fato de que cartas escandinavas, como ä Ö e Å, por exemplo, saem como quadrados. Agora, eu nem sei se isso tem a ver com as configurações de idiomas da empresa IIS (não posso tocá-las) ou algo assim, mas estou me perguntando se há uma maneira de forçar o ASP-PAGE a usar uma codificação específica, e Em seguida, force o serviço da web asp.net a decodificar com o mesmo conjunto de caracteres, sem Qualquer tipo de configurações de servidor entre tendo a chance de misturar tudo?
Tentei olhar em volta, mas não encontrei nenhum exemplo claro de como você pode fazer isso. Por favor, mantenha as respostas simples, sou apenas um iniciante no estágio aqui. Obrigado pela ajuda!
Editar:Desculpas. Não incluía o código porque era tão simples que não achei que isso revelaria nada de qualquer maneira. Aqui:
.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 qualquer forma, obrigado pela ajuda. Estarei analisando isso mais, mas como de costume, o estresse e o Rush estão me forçando a seguir em frente. Escrevi um código simples para criptografar as cartas escandinavas mais usadas manualmente e as descriptografi no servidor da web. Funciona bem até agora, só espero que não haja alteração de complicações. Só queria as letras finlandesas básicas ä, Ö e Å de qualquer maneira. :)
Eu apenas pensei que havia algum método fácil de forçar a codificação a um charset específico que eu simplesmente não conseguia encontrar. Tendem a ser terríveis em encontrar informações por conta própria.
Solução
Sem cavar o código, não posso fornecer uma resposta "aqui está na linha X", mas o problema com o qual você está lidando é de codificação. Existem várias maneiras de codificar strings, do ASCII ao UTF-8 ao unicode completo. O que isso significa é que a codificação completa do Unicode Full pode resolver seu problema.
Para fazer isso, você pode criar explicitamente seus fluxos (e/ou leitores/escritores) com uma codificação. O método é diferente para diferentes tipos de objetos e, sem conhecer seu código, não posso fornecer uma resposta explícita.
Com o ASP, você ainda pode estar recebendo lixo, no entanto. E já faz tanto tempo que eu joguei com o ASP clássico, eu teria que cavar para obter uma resposta lá. Felizmente, parece que você tem uma maneira de testar o ASP para garantir que os caracteres corretos estejam chegando, então teste. Se funcionar, concentre -se no serviço da web.
Outras dicas
Esta pergunta recente que fiz lança mais luz sobre esse tipo de problema com o Urlencoding:
/questões/696659/why-é-this-Apparing-in-my-c-strings-194163
Pode ser útil para si ou para outros que atingem esse problema.