utf-8 페이지에서 euc-kr로(또는 역으로) post전송시 charset 설정하기 - ie only

문제.
부동산써브의 홈페이지는 다국어 지원을 위해 기본 인코딩이 utf-8로 되어있다..
(물론 개중에는 아직 euc-kr로 되어있는 페이지도 간혹있기는 하다.)
그런데, 결제처리 과정에서 결제페이지로 전달된 한글이 깨져보이는 현상이 일어나고 있었다.
확인해 보니,
이것은 현재의 써브싸이트가 기본 encoding이 utf-8로 진행을 하면서, euc-kr로 되어있는 결제페이지로 데이타를 전송하다보니, 문자셋 차이로 인해 한글이 전송중 깨져서 일어나는 현상이었다.

해결.
해당부분의 에러는 일단, hidden필드를 두고, post전송할때 escape()를 적용해서 문제를 해결했다.
그러다 보니, form필드가 더 추가되어야 하는 부분들이 생기게 되었다.
(전송할필드(escape처리)와 고객에게 보여질필드)

이런문제를 근본적으로 해결해보려고, 여러군데를 찾다보니,
documenet에 charset을 설정하면 된다는 부분이 있었다. 폼전송전에
document.charset="euc-kr"로 설정을 해서 폼을 post로 전송을 해보니, 받는페이지(charset=euc-kr)에서
문자가 깨지는 현상을 막을수 있었다. 문제는 ie에서만 된다는것이다.
암튼, ie에서는 post전송전에 document.charset을 설정해주면 문자깨짐을 방지할수 있다.

ex)
<script>
function pay(frm){
document.charset="euc-kr";
}
</script>
<form name="ini" method="post" action="pay.asp" onSubmit="return pay(this)">
<input type="text" name="buyername1" size="20" value="테스트">
</form>

좀 불편하더라고, 인코딩이 서로다른 페이지에 대해서 작업을 할때는 한글에 대해서는 기본적으로 escape()/unescape()을 이용하는것이 좋겠다.

[CSS 팁]input box에서 한글과 영문 자동전환

입력 form을 이용한 페이지를 개발하다보면, 입력폼에 기본으로 한글 또는 영문 입력을 지원하기를 원하는 경우가 있다.. 이때 input box의 style에 ime-mode라는 부분을 지정해주면된다.
 

영문→한글

<input type=text style="ime-mode:active" />

영문 자판으로 사용중이더라도 한글 컴퓨터에서는 바로 한글을 입력할 수 있어욤..


 한글→영문

<input type=text style="ime-mode:inactive" />

이렇게 하면 반대로 영문을 바로 입력할 수 있게 됩니다.

[자스 팁]입력값에 특수문자, 한자 제한하기

문제.
이용자의 글을 받아서 저장하다 보면...허용하지 말아야 할 글자들이 입력되는 경우가 있다..
이럴땐 참 난감한데....특히 한자를 체크하는거 더욱이 어렵다...

해결.
특수문자에 대한 제한은 정규식을 이용하면, 쉽게 해결할수 있다. 반면에 한자를 찾아내는 것은 한글자씩 비교해서 한자인지 아닌지를 알아야하는데...인터넷을 뒤지다보니
한중일 공통한자부분은 유니코드로 바꿨을때..  u4E00 - u9FFF 범위에 들어간다고 한다..
그것을 이용해 function을 하나 만들었다...

function fnRestrictChar(str){
 var regRestrictChar = /[!?@#$%^&*※☆★○●◎♣▷▶]/;
 patten = eval(regRestrictChar);
 var regRestrictChar_str = '[제한문자]';
 if(!patten.test(str)){
  for (var i=0; i<str.length ; i++){
   var c=escape(str.charAt(i));
   c=c.replace('%','');
//   c = str.charCodeAt(i);
   alert(c);
   if(c >= 'u4E00' && c<= 'u9FFF'){
    alert("한자제한!");
    break;
   }
  }
 }else{
  alert("제한된문자!");
 }
}

출처 : Tong - 까비천사님의 자바스크립트통

utf-8에서 넘어온값 db저장시 "지정되지않은 오류..." 뛰어넘기...

다국어 페이지를 만드실때...

유니코드형태에 맞지 않는 특수문자 입력으로 db입력 오류 발생시에 아래와 같이 변경해서 처리해보자.
command 객체를 사용하여, parameter 생성시에
parameter type(adChar,adVarChar)등의 부분을 유니코드로 지정해 주셔야 합니다.
예) adwChar,adwVarChar

현재, 매물등록페이지에서 해당 에러 발생하여
위 내용을 적용해서 해결했음

vbs 파일 작업시 외부 vbs파일 include 하는 방법

vbs파일을 생성해 스케줄작업을 하는 경우가 꽤 된다.
vbs에서는 기본적으로 외부파일에 대해서 include 방식이 제공되지 않아서 상당히 불편하다.
이때, 공통으로 쓸 변수, 함수 들을 따로 파일로 만들어 놓고 쓸수 있는 방법일 찾다 아래 함수를 찾게 되었다.

'--vbs에서 외부 vbs파일을 inclue 하기 위해서 사용한다.
Sub Include(sInstFile)
On Error Resume Next

Dim oFSO, f, s

Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FileExists(sInstFile) Then
Set f = oFSO.OpenTextFile(sInstFile)
s = f.ReadAll
f.Close
ExecuteGlobal s
End If

Set oFSO = Nothing
Set f = Nothing
End Sub

위 함수를 기본 vbs파일에 넣어주고 include할 파일을 위 함수를 이용해 호출하여 사용하면된다.


예제.
 A.vbs에서 b.vbs파일 include하기 위해서는
A.vbs에서
Call Include("b.vbs")
해주면 된다..
이때..a.vbs와  b.vbs가 같은 디렉토리에 있을경우에는 파일명만 써도 되지만, 서로 다른 디렉토리에 있다면, include시에 b.vbs의 전체 경로를 써주면된다.

쿠키(cookie) 제대로 알고 쓰자.

* 문제.
쿠키를 이용한 개발을 진행하다보니, 저장한 쿠키가 사라지는 일이 발생하게 되었다.
관련된 내용을 검색하다 보니, 쿠키도 저장할수 있는 한계가 있다한다.
하나의 사이트에서 저장할수 있는 쿠키의 최대 갯수는 20개 정도 이며, 4096byte 까지란다.
이런걸 모르고, 쿠키를 사용하다보니 쿠키가 사라지는 경우가 발생하게 된것이다.

* 해결.
하위키를 이용한 쿠키를 사용하게 되면, 이런 경우를 해결할수 있다고 한다.
하위키를 사용하게 되면, 하나의 사이트에 저장할수 있는 쿠키의 수(20개) 보다 적은 수로도 필요한 쿠키들을 저장을 할수 있고, 단일쿠키로 저장할때 보다 더 작은 용량(단일쿠키로 저장할때는 각각의 쿠키에 오버헤드(만료정보)에 대한 50개정도의 문자와 쿠키에 저장되는 값의 길이가 같이 저장된다.)으로 저장하게 된다고 한다.

하위키를 이용한 쿠키를 지정하는 방식은 아래와 같다.(asp방식)
Response.Cookies("mycookie")("cookie1") = "a"
cookie1 = Request.cookies("mycookie")("cookie1")

* 참고
좀더 자세한 내용은 아래 블로그이 포스트에서 볼수 있다.
http://blog.naver.com/kdllee?Redirect=Log&logNo=70022633719

게시판 글쓰기에 html 입력에 따른 페이지깨짐 방지하기.

- 문제.
게시판에 html을 허용해 놓은 경우에 사용자의 html사용 미숙(실수)로 인해서 게시글을 볼때 페이지가 깨지는 경우가 생긴다...이런 경우 처리하기가 매우 난감한데....
이럴때, 이렇게 하면 해결될수 있다..

- 처리 방법.
html이 글을 페이지에 뿌려줄때... 페이지에 바로 뿌리지 말고,
textarea box에 해당 내용을 먼저 받도록 한다. 이때. textarea 는 화면에 보이지 않도록 처리를 해준다.(style="display:none")
이렇게 textarea에 받은것을 javascript를 이용해서  innerHTML로 화면에 뿌려주도록 한다.
이렇게 하면, wellform이 안된 html형식의 글이라도 화면이 깨지지않고 잘 보인다.

- 예제.
<div id='text_conts'></div>
<textarea style='display:none' id='text_area'>wellform이 안된 글.</textarea>
<script>document.getElementById('text_conts').innerHTML = document.getElementById('text_area').value;</script>