我正在使用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服务器中解密它们。到目前为止工作正常,我只希望没有任何复杂的变化。只是想要基本的芬兰字母ä,ö和å。 :)
我只是觉得有一些简单的方法可以强制编码到我找不到的特定字符集。在我自己寻找信息时会很糟糕。
答案 0 :(得分:1)
我提出的这个最近的问题进一步阐明了UrlEncoding这类问题:
/questions/696659/why-is-this-appearing-in-my-c-strings-194163
这可能对自己或其他遇到此问题的人有用。
答案 1 :(得分:0)
如果不深入研究代码,我就不能给你一个“这里就是在线X”的答案,但是你要处理的问题是编码问题。有多种编码字符串的方法,从ASCII到UTF-8再到完整的Unicode。这意味着Ifforcing完整的unicode编码可能会解决您的问题。
为此,您可以使用编码显式创建流(和/或读取器/写入器)。对于不同类型的对象,该方法是不同的,并且不知道您的代码,我无法给出明确的答案。
然而,使用ASP,你可能仍然会变得垃圾。而且,自从我玩经典ASP以来已经很久了,我不得不去挖掘以获得答案。幸运的是,听起来你有办法测试ASP以确保正确的字符通过,所以测试。如果有效,请关注Web服务。