2009-03-12 3 views
2

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

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

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

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

.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 

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

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

ответ

0

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

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

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

1

Этот недавний вопрос, который я просил проливает свет на этот тип вопроса с UrlEncoding:

/questions/696659/why-is-this-appearing-in-my-c-strings-194163

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