HTML에서 특수 처리되는 문자가 포함된 문자열을 웹뷰등에 그대로 사용할 경우 html 문자라 판단되어 잘못된 처리를 하거나 오류가 날 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static String escapeHTML(String s) {
StringBuilder out = new StringBuilder(Math.max(16, s.length()));
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c > 127 || c == '"' || c == '\'' || c == '<' || c == '>' || c == '&') {
out.append("&#");
out.append((int) c);
out.append(';');
} else {
out.append(c);
}
}
return out.toString();
}
1
String str = Html.escapeHtml(text);
두 방법의 결과가 다르게 나오긴 하지만 동작하는데는 아무런 문제가 없음
예를 들어 <
를 라이브러리에서는 <
로 변환 하지만 간단히 만든 함수에서는 해당하는 정수값이 들어옴
http://www.javapractices.com/topic/TopicAction.do?Id=96
https://developer.android.com/reference/android/text/Html#escapeHtml(java.lang.CharSequence)
http://daplus.net/java-java에서-html을-이스케이프-처리하는-데-권장되는-방법/