2013-06-18 2 views
1

나는 2 일 동안이 문제로 벽에 머리를 대고 있었고 내 vbscript/입술은 녹슬 었습니다.ado/vbscript를 사용하여 저장된 proc의 nvarchar 필드에 유니 코드 데이터를 보내려면 어떻게해야합니까?

레거시 제품을 상속 받았습니다. 일부 데이터를 저장하기 전에 기본 암호화를 수행하고 데이터베이스에서 데이터를 읽을 때 암호 해독 방법을 포함하는 방법이 포함되어 있습니다.

암호화 된 값을 화면에 덤프 한 다음 암호화 된 값을 원본만큼 잘 복호화 할 수 있습니다.

문제는 데이터베이스입니다.

이 데이터를 저장된 proc로 보내려고하면 일부 문자가 문자 # 65533 (물음표가있는 다이아몬드)으로 바뀝니다. decrypt 메서드가이 데이터를 저장하면 해당 홀수 문자로 수행 할 작업을 알 수 없습니다.

나는 또한 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 

과 NVARCHAR 필드의 것을 나타내는 해요 : 나는 필드에 암호화 된 데이터를 붙여 SQL Server Management Studio를 통해 저장된 프로 시저를 실행할 수 있으며, 그것은 잘 작동합니다. 해독 방법은 정확히 무엇을 해야하는지 알고 있습니다.

+0

은 유니 코드 형식으로 저장된 asp 파일 자체입니까? – John

+0

메모장 ++가 그렇다고합니다. – TimWeis75

+0

MethodThatReturnsUnicodeDataThatDumpsToTheScreenJustFine()에 대한 코드를 게시 할 수 있습니다. 널 문자 종료 및 길이와 같은 몇 가지 사항이 중요합니다. – Papasmile

답변

1

ASP 스크립트 (메모장 등)가 UTF-8 형식으로 저장되었는지 확인하십시오. 이것은 먼저 표시하거나 저장 UTF-8 페이지에 대한이를 넣어해야 IIS7 이후, 내 모든 ASP에 포함입니다

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

, 적어도 내가 사용하는 IIS의 일본어 버전에서 (IIS6에서 선택적으로 사용)

+0

나는 그 변화를 만들었고 나는 같은 결과를 얻고있다. 다른 아이디어? – TimWeis75

+0

ASP 파일 자체가 UTF-8 형식으로 저장되었는지 100 % 확신합니까? 또한 모든 필드에 nvarchar, ntext 등의 N 옵션을 사용하여 데이터베이스에 데이터를 저장 하시겠습니까? – silver