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



这两天我一直在为这个问题绞尽脑汁,我的vbscript/ado已经生锈了。

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

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

问题出在数据库。

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

我用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管理工作室通过粘贴加密数据到字段执行存储过程,它工作得很好。解密方法知道该做什么。

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

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

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

最新更新