/*
* HtmlUtil.java
*
* This file is part of SQL Workbench/J, http://www.sql-workbench.net
*
* Copyright 2002-2008, Thomas Kellerer
* No part of this code maybe reused without the permission of the author
*
* To contact the author please send an email to: support@sql-workbench.net
*
*/
package workbench.util;
/**
* @author support@sql-workbench.net
*/
public class HtmlUtil
{
public static final String escapeHTML(String s)
{
if (s == null) return null;
StringBuilder sb = new StringBuilder(s.length() + 100);
int n = s.length();
for (int i = 0; i < n; i++)
{
char c = s.charAt(i);
switch (c)
{
case '<': sb.append("<"); break;
case '>': sb.append(">"); break;
case '&': sb.append("&"); break;
case '"': sb.append("""); break;
case '\'': sb.append("'"); break;
case '\u00e0': sb.append("à");break;
case '\u00c0': sb.append("À");break;
case '\u00e2': sb.append("â");break;
case '\u00c2': sb.append("Â");break;
case '\u00e4': sb.append("ä");break;
case '\u00c4': sb.append("Ä");break;
case '\u00e5': sb.append("å");break;
case '\u00c5': sb.append("Å");break;
case '\u00e6': sb.append("æ");break;
case '\u00c6': sb.append("Æ");break;
case '\u00e7': sb.append("ç");break;
case '\u00c7': sb.append("Ç");break;
case '\u00e9': sb.append("é");break;
case '\u00c9': sb.append("É");break;
case '\u00e8': sb.append("è");break;
case '\u00c8': sb.append("È");break;
case '\u00ea': sb.append("ê");break;
case '\u00ca': sb.append("Ê");break;
case '\u00eb': sb.append("ë");break;
case '\u00cb': sb.append("Ë");break;
case '\u00ef': sb.append("ï");break;
case '\u00cf': sb.append("Ï");break;
case '\u00f4': sb.append("ô");break;
case '\u00d4': sb.append("Ô");break;
case '\u00f6': sb.append("ö");break;
case '\u00d6': sb.append("Ö");break;
case '\u00f8': sb.append("ø");break;
case '\u00d8': sb.append("Ø");break;
case '\u00df': sb.append("ß");break;
case '\u00f9': sb.append("ù");break;
case '\u00d9': sb.append("Ù");break;
case '\u00fb': sb.append("û");break;
case '\u00db': sb.append("Û");break;
case '\u00fc': sb.append("ü");break;
case '\u00dc': sb.append("Ü");break;
case '\u00ae': sb.append("®");break;
case '\u00a9': sb.append("©");break;
case '\u20ac': sb.append("€"); break;
default: sb.append(c); break;
}
}
return sb.toString();
}
// public static final String unescapeHTML(String s)
// {
// String [][] escape =
// {
// { "<" , "<" } ,
// { ">" , ">" } ,
// { "&" , "&" } ,
// { """ , "\"" } ,
// { "à" , "\u00e0" } ,
// { "À" , "\u00c0" } ,
// { "â" , "\u00e2" } ,
// { "ä" , "\u00e4" } ,
// { "Ä" , "\u00c4" } ,
// { "Â" , "\u00c2" } ,
// { "å" , "\u00e5" } ,
// { "Å" , "\u00c5" } ,
// { "æ" , "\u00e6" } ,
// { "Æ" , "\u00c6" } ,
// { "ç" , "\u00e7" } ,
// { "Ç" , "\u00c7" } ,
// { "é" , "\u00e9" } ,
// { "É" , "\u00c9" } ,
// { "è" , "\u00e8" } ,
// { "È" , "\u00c8" } ,
// { "ê" , "\u00ea" } ,
// { "Ê" , "\u00ca" } ,
// { "ë" , "\u00eb" } ,
// { "Ë" , "\u00cb" } ,
// { "ï" , "\u00ef" } ,
// { "Ï" , "\u00cf" } ,
// { "ô" , "\u00f4" } ,
// { "Ô" , "\u00d4" } ,
// { "ö" , "\u00f6" } ,
// { "Ö" , "\u00d6" } ,
// { "ø" , "\u00f8" } ,
// { "Ø" , "\u00d8" } ,
// { "ß" , "\u00df" } ,
// { "ù" , "\u00f9" } ,
// { "Ù" , "\u00d9" } ,
// { "û" , "\u00fb" } ,
// { "Û" , "\u00db" } ,
// { "ü" , "\u00fc" } ,
// { "Ü" , "\u00dc" } ,
// { " " , " " } ,
// { "®" , "\u00a9" } ,
// { "©" , "\u00ae" } ,
// { "€" , "\u20a0" }
// };
//
// int i, j, k;
//
// i = s.indexOf("&");
// if (i > -1)
// {
// j = s.indexOf(";");
// if (j > i)
// {
// String temp = s.substring(i , j + 1);
// // search in escape[][] if temp is there
// k = 0;
// while (k < escape.length)
// {
// if (escape[k][0].equals(temp)) break;
// else k++;
// }
// s = s.substring(0 , i) + escape[k][1] + s.substring(j + 1);
// return unescapeHTML(s); // recursive call
// }
// }
// return s;
// }
}
|