001: /*
002: * HtmlUtil.java
003: *
004: * This file is part of SQL Workbench/J, http://www.sql-workbench.net
005: *
006: * Copyright 2002-2008, Thomas Kellerer
007: * No part of this code maybe reused without the permission of the author
008: *
009: * To contact the author please send an email to: support@sql-workbench.net
010: *
011: */
012: package workbench.util;
013:
014: /**
015: * @author support@sql-workbench.net
016: */
017: public class HtmlUtil {
018:
019: public static final String escapeHTML(String s) {
020: if (s == null)
021: return null;
022: StringBuilder sb = new StringBuilder(s.length() + 100);
023: int n = s.length();
024: for (int i = 0; i < n; i++) {
025: char c = s.charAt(i);
026: switch (c) {
027: case '<':
028: sb.append("<");
029: break;
030: case '>':
031: sb.append(">");
032: break;
033: case '&':
034: sb.append("&");
035: break;
036: case '"':
037: sb.append(""");
038: break;
039: case '\'':
040: sb.append("'");
041: break;
042: case '\u00e0':
043: sb.append("à");
044: break;
045: case '\u00c0':
046: sb.append("À");
047: break;
048: case '\u00e2':
049: sb.append("â");
050: break;
051: case '\u00c2':
052: sb.append("Â");
053: break;
054: case '\u00e4':
055: sb.append("ä");
056: break;
057: case '\u00c4':
058: sb.append("Ä");
059: break;
060: case '\u00e5':
061: sb.append("å");
062: break;
063: case '\u00c5':
064: sb.append("Å");
065: break;
066: case '\u00e6':
067: sb.append("æ");
068: break;
069: case '\u00c6':
070: sb.append("Æ");
071: break;
072: case '\u00e7':
073: sb.append("ç");
074: break;
075: case '\u00c7':
076: sb.append("Ç");
077: break;
078: case '\u00e9':
079: sb.append("é");
080: break;
081: case '\u00c9':
082: sb.append("É");
083: break;
084: case '\u00e8':
085: sb.append("è");
086: break;
087: case '\u00c8':
088: sb.append("È");
089: break;
090: case '\u00ea':
091: sb.append("ê");
092: break;
093: case '\u00ca':
094: sb.append("Ê");
095: break;
096: case '\u00eb':
097: sb.append("ë");
098: break;
099: case '\u00cb':
100: sb.append("Ë");
101: break;
102: case '\u00ef':
103: sb.append("ï");
104: break;
105: case '\u00cf':
106: sb.append("Ï");
107: break;
108: case '\u00f4':
109: sb.append("ô");
110: break;
111: case '\u00d4':
112: sb.append("Ô");
113: break;
114: case '\u00f6':
115: sb.append("ö");
116: break;
117: case '\u00d6':
118: sb.append("Ö");
119: break;
120: case '\u00f8':
121: sb.append("ø");
122: break;
123: case '\u00d8':
124: sb.append("Ø");
125: break;
126: case '\u00df':
127: sb.append("ß");
128: break;
129: case '\u00f9':
130: sb.append("ù");
131: break;
132: case '\u00d9':
133: sb.append("Ù");
134: break;
135: case '\u00fb':
136: sb.append("û");
137: break;
138: case '\u00db':
139: sb.append("Û");
140: break;
141: case '\u00fc':
142: sb.append("ü");
143: break;
144: case '\u00dc':
145: sb.append("Ü");
146: break;
147: case '\u00ae':
148: sb.append("®");
149: break;
150: case '\u00a9':
151: sb.append("©");
152: break;
153: case '\u20ac':
154: sb.append("€");
155: break;
156:
157: default:
158: sb.append(c);
159: break;
160: }
161: }
162: return sb.toString();
163: }
164:
165: // public static final String unescapeHTML(String s)
166: // {
167: // String [][] escape =
168: // {
169: // { "<" , "<" } ,
170: // { ">" , ">" } ,
171: // { "&" , "&" } ,
172: // { """ , "\"" } ,
173: // { "à" , "\u00e0" } ,
174: // { "À" , "\u00c0" } ,
175: // { "â" , "\u00e2" } ,
176: // { "ä" , "\u00e4" } ,
177: // { "Ä" , "\u00c4" } ,
178: // { "Â" , "\u00c2" } ,
179: // { "å" , "\u00e5" } ,
180: // { "Å" , "\u00c5" } ,
181: // { "æ" , "\u00e6" } ,
182: // { "Æ" , "\u00c6" } ,
183: // { "ç" , "\u00e7" } ,
184: // { "Ç" , "\u00c7" } ,
185: // { "é" , "\u00e9" } ,
186: // { "É" , "\u00c9" } ,
187: // { "è" , "\u00e8" } ,
188: // { "È" , "\u00c8" } ,
189: // { "ê" , "\u00ea" } ,
190: // { "Ê" , "\u00ca" } ,
191: // { "ë" , "\u00eb" } ,
192: // { "Ë" , "\u00cb" } ,
193: // { "ï" , "\u00ef" } ,
194: // { "Ï" , "\u00cf" } ,
195: // { "ô" , "\u00f4" } ,
196: // { "Ô" , "\u00d4" } ,
197: // { "ö" , "\u00f6" } ,
198: // { "Ö" , "\u00d6" } ,
199: // { "ø" , "\u00f8" } ,
200: // { "Ø" , "\u00d8" } ,
201: // { "ß" , "\u00df" } ,
202: // { "ù" , "\u00f9" } ,
203: // { "Ù" , "\u00d9" } ,
204: // { "û" , "\u00fb" } ,
205: // { "Û" , "\u00db" } ,
206: // { "ü" , "\u00fc" } ,
207: // { "Ü" , "\u00dc" } ,
208: // { " " , " " } ,
209: // { "®" , "\u00a9" } ,
210: // { "©" , "\u00ae" } ,
211: // { "€" , "\u20a0" }
212: // };
213: //
214: // int i, j, k;
215: //
216: // i = s.indexOf("&");
217: // if (i > -1)
218: // {
219: // j = s.indexOf(";");
220: // if (j > i)
221: // {
222: // String temp = s.substring(i , j + 1);
223: // // search in escape[][] if temp is there
224: // k = 0;
225: // while (k < escape.length)
226: // {
227: // if (escape[k][0].equals(temp)) break;
228: // else k++;
229: // }
230: // s = s.substring(0 , i) + escape[k][1] + s.substring(j + 1);
231: // return unescapeHTML(s); // recursive call
232: // }
233: // }
234: // return s;
235: // }
236:
237: }
|