1

在两天的大部分时间里,我一直在用这个问题把头撞到墙上,而且我的 vbscript/ado 超级生锈。

我继承了一个遗留产品。它包含一种在存储数据之前对某些数据执行基本加密的方法,并在从数据库中读取数据时包含一个解密方法。

我可以将加密值转储到屏幕上,然后将加密值解密为原始值就好了。

问题是数据库。

当我尝试将此数据发送到存储过程时,一些字符被替换为字符#65533(带问号的菱形)。当解密方法获得这些数据时,它不知道如何处理这些奇怪的字符。

我表示这是一个 nvarchar 字段adVarWChar

Set cmd = Server.CreateObject("ADODB.Command")

cmd.CommandType = adCmdStoredProc
cmd.CommandText = "_sp_InsertData"
cmd.ActiveConnection = DefaultConnectionString

cmd.Parameters.Append cmd.CreateParameter("@somevariable", _
adVarWChar, _
adParamInput, _
255, _
MethodThatReturnsUnicodeDataThatDumpsToTheScreenJustFine())

cmd.Execute

另外:我可以通过 Sql Server Management Studio 通过将加密数据粘贴到字段中来执行存储的过程,它工作得很好。解密方法确切地知道要做什么。

4

1 回答 1

1

确保您的 ASP 脚本(在记事本中或其他)保存为 UTF-8 格式。

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.ContentType = "text/html"
Response.CodePage = 65001
Response.CharSet = "UTF-8"
%>

这是我所有 ASP 上的第一个包含,因为 IIS7 你必须把它放在 UTF-8 页面上才能显示或保存,它曾经在 IIS6 中是可选的(至少在我使用的日语版本的 IIS 中)

于 2013-06-19T05:15:24.113 回答