안규 공부방
	 ASP >  ASP 에서 UTF-8 처리  
	
	
	1. 모든 ASP 코드 페이지 첫줄에 다음과 같은 코드를 추가합니다
	
		
		@CODEPAGE="65001" language="vbscript" 
		session.CodePage = "65001" 
		Response.CharSet = "utf-8" 
		Response.buffer=true 
		Response.Expires = 0 
		
  
	
	2. Meta 테그를 다음과 같이 추가 합니다.
	

		아리러니하게도 XHTML 과 HTML5 에서의 인코딩 설정은 다르다. 

		XHTML의 경우에는 아래 코드를 <head> 태그 안에 삽입한다. 
		
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		

		HTML5의 경우 아래 코드를 <head> 태그 안에 삽입한다. 
		
		<meta charset="utf-8">
		

		그리고 주의해야 할 부분이 메타테그 내의 캐릭터셋이다.
  
		만약 타이틀이 한글이라면 브라우저에 따라 캐릭터셋을 선언하기 전부터 한글 인코딩이 결정는 경우가 있다
		(이후 캐릭터 셋을 정의한다고 해도 소용없음)

		만약 타이틀이 한글일 경우는 순서를 캐릭터셋 선언 이후로 해줘야 한다.
		
		
		<head>
			<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
			<title>가나다</title>
		

		
		-- 주의 : UTF-8 과 utf-8 은 서로 다른 타입의 인코딩을 제공한다. 한가지로 통일해서 사용하자. 

  	
	3. Response.ChaRset = "utf-8"  
	
		ASP의 response.charset을 이용해서 문자 코드 세트명을 지정하는 부분 입니다.
		설정시 <html> 태그 보다 앞에 선언 되어야 HTML 이 출력되면서 해당 속성을 인식하게 됩니다.

	
	4. 에디트플러스나 울트라 에디터에서 수정후 저장할 때 반드시 Encoding 방식을 UTF-8 로 저장합니다
	
 
	
	5.DB Insert/Update 시 숫자 타입을 제외한 모든 대상에 N을 추가 합니다
	
		Insert 테이블이름 (칼럼a, 칼럼b) value (N'입력a', N'입력b')
		update 테이블이를 set 칼럼a = N'입력a' where 고유칼럼 = '번호'
  
	
	6.DB like 검색시 N 추가
	

	
	7. 파일 첨부 DEXT Upload사용(영문으로 설치)
	
		
		SET uploadform = Server.CreateObject("DEXT.FileUpload")
		uploadform.DefaultPath = Server.MapPath(ESP_BBS_DATA)
		uploadform.CodePage = 65001
		wFileSize = 0
		rAttachment = uploadform("txtAttachFile")

		If Len(rAttachment) > 0 Then
			wFileName =  uploadform("txtAttachFile").FileName
			wFileSize =  uploadform("txtAttachFile").FileLen

			response.write uploadform.DefaultPath
			rAttachment = uploadform.SaveAs(uploadform.DefaultPath & "" & wFileName , False)
			rAttachment = UploadForm.LastSavedFileName
		End If
		

	
	9. CDO Mail발송
	
		
		Dim iMsg
		Dim iConf
		Dim Flds
		Dim strHTML
		Const cdoSendUsingPort = 2 '1:로컬, 2:외부 smtp
		set iMsg = CreateObject("CDO.Message")
		set iConf = CreateObject("CDO.Configuration")
		Set Flds = iConf.Fields
		Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
		Flds.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  '포트번호
		Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
		Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
		Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") =  "" 'ID
		Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") =  "" '암호

		Flds.Update
		Set iMsg.Configuration = iConf
		iMsg.To = "xxxx@xxx.ccx" 'ToDo: Enter a valid email address.
		iMsg.From = "xxxx@xxx.ccx"  'ToDo: Enter a valid email address.
		iMsg.Subject = "This is a test CDOSYS message (Sent via Port 25)"

		'iMsg..TextBody = strHTMLMsg '// 텍스트
		iMsg.HTMLBody = strHTML  '// HTML 제목 깨짐 발생..

		iMsg.BodyPart.Charset="UTF-8" '/// 한글을 위해선 꼭 넣어 주어야 합니다.
		iMsg.HTMLBodyPart.Charset="UTF-8" '/// 한글을 위해선 꼭 넣어 주어야 합니다.
		iMsg.Send
		End With
		Set iMsg = Nothing
		Set iConf = Nothing
		Set Flds = Nothing
		


	
	10. 한글 링크가 포함되어 있는 경우 Target 페이지에서 한글이 깨지는 현상 해결 방법
	
		Server 객체의 URLPathEncode 함수를 사용해서 받으면 된다.

		Server.UrlEncode() 를 사용해도 됩니다.

		
		fname		= request("fname")


		<a href="a.asp?fname=<%=Server.URLPathEncode(fname)%>"> 링크가기 </a>
		



	
	11. 업로드 컴포넌트 UTF-8 지원여부 확인
	

		SiteGalaxy(사이트 갤럭시) 및 ABC 업로드 :  utf-8을 지원하지 않음
		ABC 업로드 : 4.1 부터 지원
		덱스트업로드는 3.x 이후 지원

						
		set UploadForm				= Server.CreateObject("ABCUpload4.XForm") 
		UploadForm.CodePage		= 65001
		UploadForm.Overwrite		= True														'덮어쓰기 허용
		UploadForm.AbsolutePath		= True
		UploadForm.MaxUploadSize		= 1024*1024*20												'파일용량 (10M)


		If UploadForm("board_fname1") <> "" Then
			FileCnt		= UploadForm("board_fname1").count-1
		Else
			FileCnt		= 0
		End If

		Dim UpFileName()
		Redim UpFileName(FileCnt) 


		'파일 업로드 처리

		For i = 0 To FileCnt
			Set theField =  UploadForm(Trim("board_fname1"))(i+1)
		Next
		


	
	12. 파일다운로드 - 한글파일명 깨지는 현상
	
		아래소스의 핵심은 Server.URLPathEncode 객체를 이용하는 겁니다.
		
		<a href="a.asp?fname=<%=Server.URLPathEncode(fname)%>"> 다운로드 </a>

		
		<%@ CODEPAGE=65001%>
		<%session.CodePage = "65001" %>
		<%response.charset = "utf-8"%>
		<%
		Response.buffer=true 
		Response.Expires = 0 

		'Response.ContentType = "application/octet-stream" 
		'Response.ContentType = "application/unknown"
		Response.ContentType="application/x-gzip"
		fname		= request("fname")
		fpath		= request("fpath")

		Response.AddHeader "Content-Disposition","attachment; filename=" & Server.URLPathEncode(fname)

		UP_FILE_DIR = "/file_data/"&FPATH&FNAME
		UP_FILE_DIR = Server.MapPath(UP_FILE_DIR)  


		Set objStream = Server.CreateObject("ADODB.Stream")
		objStream.Open
		objStream.Type = 1
		 
		objStream.LoadFromFile UP_FILE_DIR
			 
		strFile = objStream.Read
		 
		Response.BinaryWrite strFile
		Set objStream = Nothing
		response.End
		%>
		
	
	
	13. Javascript 를 이용하여 한글을 링크 연결할경우는 escape() 함수를 이용하여 링크를 걸어주어야 합니다.
	
		
		document.location.href = "movepage.aspx?name=" + escape("배철수");