Классическая проблема Asp.Net в urlEncoding - PullRequest
2 голосов
/ 12 марта 2009

Я использую веб-сервис для передачи информации из нескольких старых страниц .asp в базу данных. Проблема в том, что при использовании httpGet мне нужно закодировать информацию, чтобы ее можно было безопасно передать.

Все работает как сон, за исключением того факта, что такие скандинавские буквы, как, например, ä и å, выходят в виде квадратов. Теперь я даже не знаю, связано ли это с настройками языка IIS компании (не могу их коснуться) или чем-то, но мне интересно, есть ли способ заставить страницу asp использовать определенную кодировку, и затем принудительно декодировать веб-сервис asp.net с тем же набором символов, без каких-либо настроек сервера между ними, чтобы получить возможность смешать все это?

Я пытался осмотреться, но не нашел четких примеров того, как именно вы можете это сделать. Пожалуйста, оставьте ответы простыми, я здесь только начинающий. Спасибо за помощь!

Edit: Извиняюсь. Не включал код, потому что он был настолько прост, что я не думал, что он все равно что-нибудь раскроет. Здесь:

.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

веб-сервер:

<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

В любом случае, спасибо за помощь. Я буду больше разбираться в этом, но, как обычно, стресс и спешка заставляют меня двигаться дальше. Я написал простой код для ручного шифрования наиболее часто используемых скандинавских букв и расшифровал их на веб-сервере. Пока работает отлично, я просто надеюсь, что никаких осложнений не изменится. Просто хотел основные финские буквы ä, ö и å в любом случае. :)

Я просто подумал, что есть какой-то простой способ принудительного кодирования для определенной кодировки, который я просто не могу найти. Склонен к поиску информации самостоятельно.

Ответы [ 2 ]

1 голос
/ 30 марта 2009

Этот недавний вопрос, который я задал, проливает дополнительный свет на проблему такого типа с UrlEncoding:

/ вопросы / 696659 / почему-это-это-появляясь-в-моих-C-строки-194163

Это может оказаться полезным для вас или других, решающих эту проблему.

0 голосов
/ 12 марта 2009

Не углубляясь в код, я не могу дать вам ответ «здесь, в строке X», но проблема, с которой вы сталкиваетесь, связана с кодировкой. Существует несколько способов кодирования строк, от ASCII до UTF-8 до полноценного Unicode. Это означает, что если принудительное полное кодирование Unicode может решить вашу проблему.

Для этого вы можете явно создавать свои потоки (и / или читатели / писатели) с кодировкой. Этот метод отличается для разных типов объектов, и, не зная вашего кода, я не могу дать вам четкий ответ.

Однако ASP может по-прежнему получать мусор. И так давно я не играл с классическим ASP, и мне приходилось копать, чтобы получить ответ. К счастью, похоже, у вас есть способ протестировать ASP, чтобы убедиться, что правильные символы вводятся, так что тестируйте. Если это работает, сосредоточьтесь на веб-сервисе.

...