UTF-8 이나 EUC-KR 기타 ISO-8859-1 등 웹 서버에 설정된 여러가지 인코딩들이 존재하는데요.
이런 부분들이 섞여 있을경우 인코딩 또는 디코딩 하는데 꽤나 애를 먹습니다.
그래서 생각했던것이 각각의 문자들의 Char Code 값을 가져와 그값을 전달하면 숫자이기 때문에
쉽게 받아서 다시 역으로 해석하면 인코딩 타입에 상관없이 해결되더군요.
Char Code 값으로 바꿀때 각각의 자리수가 다르기 때문에 그에 따른 자릿수 구분 관련 부분을
추가하기 위해 소스가 약간 길어졌는데요.
보통은 Java 와 Java 사이에서 인코딩 디코딩 또는 JavaScript 와 JavaScript 사이에서 인코딩 디코딩
하겠지만 JavaScript 와 Java 사이에서도 인코딩 디코딩이 될수 있기 때문에 별도로 구현해 놓았습니다.
기본적인 인코딩 디코딩에서는 utf-8, euc-kr 때 문제가 발생 하지만 아래 방법을 사용하시면
도움이 되실 겁니다.
javascript
function fncEnCode(param)
{
// sjisbmoc
var encode = '';
for(i=0; i<param.length; i++)
{
var len = ''+param.charCodeAt(i);
var token = '' + len.length;
encode += token + param.charCodeAt(i);
}
return encode;
}
function fncDeCode(param)
{
// sjisbmoc
var sb = '';
var pos = 0;
var flg = true;
if(param != null)
{
if(param.length>1)
{
while(flg)
{
var sLen = param.substring(pos,++pos);
var nLen = 0;
try
{
nLen = parseInt(sLen);
}
catch(e)
{
nLen = 0;
}
var code = '';
if((pos+nLen)>param.length)
code = param.substring(pos);
else
code = param.substring(pos,(pos+nLen));
pos += nLen;
sb += String.fromCharCode(code);
if(pos >= param.length)
flg = false;
}
}
}
return sb;
}
java
public static String EnCode(String param)
{
// sjisbmoc
StringBuffer sb = new StringBuffer();
if(param == null)
{
sb.append("");
}
else
{
if(param.length()>0)
{
for(int i=0; i<param.length(); i++)
{
String len = ""+((int)param.charAt(i));
sb.append(len.length());
sb.append(((int)param.charAt(i)));
}
}
}
return sb.toString();
}
public static String DeCode(String param)
{
// sjisbmoc
StringBuffer sb = new StringBuffer();
int pos = 0;
boolean flg = true;
if(param!=null)
{
if(param.length()>1)
{
while(flg)
{
String sLen = param.substring(pos,++pos);
int nLen = 0;
try
{
nLen = Integer.parseInt(sLen);
}
catch(Exception e)
{
nLen = 0;
}
String code = "";
if((pos+nLen)>param.length())
code = param.substring(pos);
else
code = param.substring(pos,(pos+nLen));
pos += nLen;
sb.append(((char) Integer.parseInt(code)));
if(pos >= param.length())
flg = false;
}
}
}
else
{
param = "";
}
return sb.toString();
'ETC' 카테고리의 다른 글
[HTML5] DOCTYPE, 추가된태그, 사라진태그, 추가된input타입 (0) | 2013.08.22 |
---|---|
DB 접속 드라이버 (0) | 2012.07.03 |
정규식 (0) | 2012.06.12 |
CSS display 속성 - inline과 block (0) | 2012.05.31 |
MSSQL과 Oracle 함수 비교 (0) | 2012.04.06 |