한글을 전송 시 깨져서 삽질하는 경우가 참 많다.
전송 할때 한글 문자를 아스키 코드로 변환하여 전송뒤 받을때 아스키 코드를 풀어 쓰는 방법으로 송수신 문자셋에 제약없이 사용 가능하다.
escape
unescape
전송 할때 한글 문자를 아스키 코드로 변환하여 전송뒤 받을때 아스키 코드를 풀어 쓰는 방법으로 송수신 문자셋에 제약없이 사용 가능하다.
escape
public static String escape(String src){
int i;
char j;
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length() * 6);
for (i = 0; i < src.length(); i++) {
j = src.charAt(i);
if (Character.isDigit(j) || Character.isLowerCase(j)
|| Character.isUpperCase(j))
tmp.append(j);
else if (j < 256) {
tmp.append("\\");
if (j < 16)
tmp.append("0");
tmp.append(Integer.toString(j, 16));
} else {
tmp.append("\\u");
tmp.append(Integer.toString(j, 16));
}
}
return tmp.toString();
}
unescape
public static String unescape(String src) {
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("\\", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}




댓글을 달아 주세요
아악 멋쟁이 ㅋㅋㅋ