Core Java
[Core Java] HTML entity 코드 변환
헤르메스의날개
2021. 3. 23. 00:41
728x90
한때 &#으로 시작하는 이상한 문자열을 가져다 붙여넣기 하라는 글이 있었고,
신기하게 붙여넣기 하면 한글로 변형이 되는 것이 있었다.
다 와 같이 &#으로 시작하는 문자를 html entity 라고 하는데
아래 코드는 이러한 html entity 코드를 변환하는 자바스크립트, 자바 소스이다.
자바스크립트 :
<script type="text/javascript">
function decodeHtmlEntity(str){
var textarea = document.createElement("textarea");
textarea.innerHTML = str;
var result = textarea.value;
textarea.parentNode.removeChild(textarea);
return result;
}
alert(decodeHtmlEntity("다") );
</script>
자바 :
package foren2.utils.http;
public class HTMLEntityDecodeTest {
public static String htmlEntityDecode( String s ) {
int i = 0, j = 0, pos = 0;
StringBuffer sb = new StringBuffer();
while (( i = s.indexOf("&#", pos) ) != -1 && ( j = s.indexOf(';', i) ) != -1) {
int n = -1;
for (i += 2; i < j; ++i) {
char c = s.charAt(i);
if ('0' <= c && c <= '9') {
n = ( n == -1 ? 0 : n * 10 ) + c - '0';
} else {
break;
}
}
if (i != j) {
n = -1; // malformed entity - abort
}
if (n != -1) {
sb.append((char)n);
i = j + 1; // skip ';'
} else {
for (int k = pos; k < i; ++k) {
sb.append(s.charAt(k));
}
}
pos = i;
}
if (sb.length() == 0) {
return s;
} else {
sb.append(s.substring(pos, s.length()));
}
return sb.toString();
}
public static void main( String[] args ) {
System.out.println(HTMLEntityDecodeTest.htmlEntityDecode("전기완료"));
}
}
실행결과
전기완료
728x90