如何使用ado / vbscript将unicode数据发送到存储过程中的nvarchar字段?

时间:2013-06-18 20:36:11

标签: sql-server asp-classic vbscript ado nvarchar

在两天的大部分时间里,我一直在用这个问题撞墙,而且我的vbscript / ado非常生锈。

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

我可以将加密的值转储到屏幕上,然后将加密的值解密为原始版本。

问题在于数据库。

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

我表示它是adVarWChar

的nvarchar字段
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执行存储过程,并且它可以正常工作。解密方法确切地知道该做什么。

1 个答案:

答案 0 :(得分: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中)