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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top