2

我正在使用 Web 服务将信息从一堆旧的 .asp 页面传递到数据库。问题是使用 httpGet,我需要对信息进行编码,以便可以安全地传递。

除了 ä ö 和 å 之类的斯堪的纳维亚字母以正方形出现之外,一切都像做梦一样。现在我什至不知道这是否与公司的 IIS 语言设置(不能触摸它们)或其他什么有关,但我想知道是否有办法强制 asp 页面使用特定的编码,并且然后强制 asp.net Web 服务使用相同的字符集进行解码,中间没有任何类型的服务器设置有机会将它们混合在一起?

我试图环顾四周,但没有找到任何明确的例子来说明如何做到这一点。请保持回复简单,我只是在这里实习的初学者。谢谢您的帮助!

编辑: 道歉。没有包含代码,因为它太简单了,我不认为它会泄露任何东西。这里:

.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

无论如何,谢谢你的帮助。我会更多地研究这个,但像往常一样,压力和匆忙迫使我继续前进。我编写了一个简单的代码来手动加密最常用的斯堪的纳维亚字母,并在 Web 服务器中对其进行解密。到目前为止工作正常,我只是希望没有任何并发​​症发生。反正只想要基本的芬兰字母 ä、ö 和 å。:)

我只是认为有一些简单的方法可以将编码强制为我找不到的特定字符集。在自己查找信息方面往往很糟糕。

4

2 回答 2

1

我最近提出的这个问题进一步阐明了 UrlEncoding 的此类问题:

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

它可能对您自己或遇到此问题的其他人有用。

于 2009-03-30T16:19:30.587 回答
0

如果不深入研究代码,我不能给你一个“这里是第 X 行”的答案,但你正在处理的问题是编码问题之一。有多种编码字符串的方法,从 ASCII 到 UTF-8 到完整的 Unicode。这意味着如果强制使用完整的 unicode 编码可能会解决您的问题。

为此,您可以使用编码显式创建流(和/或读取器/写入器)。对于不同类型的对象,方法是不同的,不知道你的代码,我不能给你一个明确的答案。

但是,使用 ASP,您可能仍然会收到垃圾邮件。而且,我已经很久没有玩过经典的 ASP 了,我必须在那里挖掘才能得到答案。幸运的是,听起来你有办法测试 ASP 以确保正确的字符通过,所以测试一下。如果可行,请专注于 Web 服务。

于 2009-03-12T14:32:07.703 回答