아래 코드에서 참조했으나.. 버그가 있어서 좀 수정.
http://www.michaelyagudaev.com/programming/sql/7
public class HtmlEntities {
private static Map<String, Character> map = new LinkedHashMap<String, Character>();
static {
map.put("&", (char)38);
map.put("<", (char)60);
map.put(">", (char)62);
map.put(""", (char)34);
map.put(" ", (char)160);
map.put("¡", (char)161);
map.put("¢", (char)162);
map.put("£", (char)163);
map.put("¤", (char)164);
map.put("¥", (char)165);
map.put("¦", (char)166);
map.put("§", (char)167);
map.put("¨", (char)168);
map.put("©", (char)169);
map.put("ª", (char)170);
map.put("«", (char)171);
map.put("¬", (char)172);
map.put("­", (char)173);
map.put("®", (char)174);
map.put("¯", (char)175);
map.put("°", (char)176);
map.put("±", (char)177);
map.put("²", (char)178);
map.put("³", (char)179);
map.put("´", (char)180);
map.put("µ", (char)181);
map.put("¶", (char)182);
map.put("·", (char)183);
map.put("¸", (char)184);
map.put("¹", (char)185);
map.put("º", (char)186);
map.put("»", (char)187);
map.put("¼", (char)188);
map.put("½", (char)189);
map.put("¾", (char)190);
map.put("¿", (char)191);
map.put("×", (char)215);
map.put("÷", (char)247);
map.put("À", (char)192);
map.put("Á", (char)193);
map.put("Â", (char)194);
map.put("Ã", (char)195);
map.put("Ä", (char)196);
map.put("Å", (char)197);
map.put("Æ", (char)198);
map.put("Ç", (char)199);
map.put("È", (char)200);
map.put("É", (char)201);
map.put("Ê", (char)202);
map.put("Ë", (char)203);
map.put("Ì", (char)204);
map.put("Í", (char)205);
map.put("Î", (char)206);
map.put("Ï", (char)207);
map.put("Ð", (char)208);
map.put("Ñ", (char)209);
map.put("Ò", (char)210);
map.put("Ó", (char)211);
map.put("Ô", (char)212);
map.put("Õ", (char)213);
map.put("Ö", (char)214);
map.put("Ø", (char)216);
map.put("Ù", (char)217);
map.put("Ú", (char)218);
map.put("Û", (char)219);
map.put("Ü", (char)220);
map.put("Ý", (char)221);
map.put("Þ", (char)222);
map.put("ß", (char)223);
map.put("à", (char)224);
map.put("á", (char)225);
map.put("â", (char)226);
map.put("ã", (char)227);
map.put("ä", (char)228);
map.put("å", (char)229);
map.put("æ", (char)230);
map.put("ç", (char)231);
map.put("è", (char)232);
map.put("é", (char)233);
map.put("ê", (char)234);
map.put("ë", (char)235);
map.put("ì", (char)236);
map.put("í", (char)237);
map.put("î", (char)238);
map.put("ï", (char)239);
map.put("ð", (char)240);
map.put("ñ", (char)241);
map.put("ò", (char)242);
map.put("ó", (char)243);
map.put("ô", (char)244);
map.put("õ", (char)245);
map.put("ö", (char)246);
map.put("ø", (char)248);
map.put("ù", (char)249);
map.put("ú", (char)250);
map.put("û", (char)251);
map.put("ü", (char)252);
map.put("ý", (char)253);
map.put("þ", (char)254);
map.put("ÿ", (char)255);
}
private static String fromHtmlEntity(String str) {
Character ch = map.get(str);
return (ch != null) ? ch.toString() : str;
}
private static String findValue(char value) {
boolean found = false;
String result = null;
for (String key : map.keySet()) {
if (map.get(key).charValue() == value) {
found = true;
result = key;
}
if (found == true) {
return result;
}
}
return result;
}
public static String encode(String encode) {
StringBuilder str = new StringBuilder(encode);
String key;
int i = 0;
while (i < str.length()) {
key = findValue(str.charAt(i));
if (key != null) {
str.replace(i, i + 1, key);
i += key.length();
} else {
i++;
}
}
return str.toString();
}
public static String decode(String decode){
StringBuilder str = new StringBuilder(decode);
Matcher m = Pattern.compile("&[A-Za-z]+;").matcher(str);
String replaceStr = null;
int matchPointer = 0;
while (m.find(matchPointer)) {
replaceStr = fromHtmlEntity(m.group());
str.replace(m.start(), m.end(), replaceStr);
matchPointer = m.start() + replaceStr.length();
}
return str.toString();
}
}
'general java' 카테고리의 다른 글
Mysql 에서 Spring Batch를 이용하여 Job Repository Table 생성 또는 삭제하는 예제 - 1 (0) | 2012.07.12 |
---|---|
Spring NoClassDefFoundError EnvironmentCapable 처리 (0) | 2012.07.12 |
json http request 보내는 ngrinder script 참조 (0) | 2012.06.15 |
apache httpclient와 protobuff를 이용해서 RPC 구현 (0) | 2012.05.18 |
protocol buffer idl 구현시 팁 (0) | 2012.05.18 |