2016-08-16 3 views
1

ASP 페이지에있는 모든 입력 또는 출력이 있으면 마법처럼 this sort of thing 작품 :ASP classic : ADODB의 문자 인코딩을 결정하는 것은 무엇입니까?

<%@ LANGUAGE="VBScript" CodePage = 65001 %> 
<% 
    Response.CharSet = "UTF-8" 
    Response.CodePage = 65001 
%> 

그러나 순수한 VBS를 실행하는 ASP 페이지이고 나는 MS의 매개 변수로 비 라틴 문자열을 전달하는 경우 SQL sproc Server.CreateObject("ADODB.Command") 통해 다음문자 사이의 어딘가에있는 명령 실행 및 MS SQL varchar 열에 넣을 때 설정되어 있습니다.

그러나 동일한 ASP 페이지에서 UTF-8 인코딩으로 데이터베이스에 이러한 문자열을 삽입하는 IIS 인스턴스가 하나 있습니다. 내가 허용하는 IIS 설정을 찾을 수 없기 때문에 ADODB.Command 매개 변수 값을 강제로 UTF-8로 변환 할 수 있습니까?

+0

UTF-8로 인코딩 된 문자를 SQL Server로 전달하는 경우 발생하는 인코딩 불일치를 설명하는 'VARCHAR'이 아닌 'NVARCHAR'열에 있어야합니다. 매개 변수는 'adVarWChar' 또는'adLongVarWChar' 데이터 유형을 사용해야합니다. – Lankymart

+0

@Lankymart - 지금 ADO 데이터 유형 플래그를 사용하여 테스트 해 보겠습니다. DB 열 *이 NVARCHAR이어야 함을 알고 있지만 레거시 시스템입니다. [ASP가 다른 IIS 서버에서 실행될 때 동일한 데이터베이스와 코드가 UTF-8로 인코딩 된 문자열을 받았을 수있는 방법]에 대한 통찰력 (http://serverfault.com/q/796971/350508)? – feetwet

+0

흥미로운 질문입니다, 두 서버에서 동일한 공급자가 사용되고 있습니까? 또한 페이지가 수행하는 작업 (예 : 양식에서 데이터 게시)에 전적으로 의존합니다. – Lankymart

답변

1

ASP 문자 인코딩은 변덕 스러울 수 있습니다. 코드베이스가 169 ASP 파일 인 경우이 UTF-8-BOM 인코딩으로 저장되었습니다. 그것은 하나의 머신에는 배치되었지만 다른 머신에는 배치되지 않았습니다. 포함 된 모든 내용은 일부 VBS FUNCTION 정의입니다. 그러나 BOM 인코딩을 사용하여 해당 파일을 포함하는 모든 ASP는 즉시 ADODB.Command 매개 변수를 UTF-8로 추가 할 수 없습니다. 대신 그것은 분명히 –하지만 ADODB.Command 목적을 위해서만, JSON PUT은 MSXML2.ServerXMLHTTP 객체 –에 대해 ASCII가 아닌 모든 것이 ? 인 것을 결정하지 않았습니다.

그게 전부입니다 : 코드 파일을 UTF-8-BOM 및 ASP 나누기로 저장하십시오. UTF-8로 저장하면 다시 작동합니다.

수십 개의 디렉토리에 169 개의 ​​ASP 파일 중 하나가 "잘못된"인코딩을 사용하여 저장된다는 것을 어떻게 알 수 있습니까? 나는 모른다. 운이 좋게도, 최근 작업이 어디에서 이루어 졌는지 알게되어 메모장에서 파일의 인코딩을 확인했습니다. ++.

클래식 ASP를 혼동시키는 두 가지 인코딩이 필요합니까? 나도 모르지만, here's at least one other answer that suggests that BOM encoding causes problems.

+0

그래, 잘 할거야. – Lankymart