Java tutorial
/* * HTMLEncode.java * * Created on 2007-9-15, 21:24:34 * Copyright (C) 2006,2007 Yong Li. All rights reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ //package com.teesoft.util; /** * * @author wind */ import java.util.Hashtable; public class HTMLEncode { private HTMLEncode() { } protected static synchronized void buildEntityTables() { entityTableEncode = new Hashtable(ENTITIES.length); for (int i = 0; i < ENTITIES.length; i += 2) { if (!entityTableEncode.containsKey(ENTITIES[i])) { entityTableEncode.put(ENTITIES[i], ENTITIES[i + 1]); } } } public static final String encode(String s) { return encode(s, "\n<br>"); } public static final String encode(String s, String cr) { if (entityTableEncode == null) { buildEntityTables(); } if (s == null) { return ""; } StringBuffer sb = new StringBuffer(s.length() * 2); for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); if (ch >= '?' && ch <= 'Z' || ch >= 'a' && ch <= 'z' || ch == ' ') { sb.append(ch); continue; } if (ch == '\n') { sb.append(cr); continue; } String chEnc = encodeSingleChar(String.valueOf(ch)); if (chEnc != null) { sb.append(chEnc); } else { sb.append("&#"); sb.append((new Integer(ch)).toString()); sb.append(';'); } } return sb.toString(); } public static final String escape(String s) { if (entityTableEncode == null) { buildEntityTables(); } if (s == null) { return ""; } StringBuffer sb = new StringBuffer(s.length() * 2); for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); if (ch >= '?' && ch <= 'Z' || ch >= 'a' && ch <= 'z' || ch == ' ') { sb.append(ch); continue; } String chEnc = encodeSingleChar(String.valueOf(ch)); if (chEnc != null) { sb.append(chEnc); } else { sb.append(ch); } } return sb.toString(); } private static String encodeSingleChar(String ch) { return (String) entityTableEncode.get(ch); } private static final String[] ENTITIES = { ">", ">", "<", "<", "[", "[<b>", "]", "</b>]", "&", "&", "\"", """, "'", "'", "\\", "\", "\251", "©", "\256", "®" }; private static Hashtable entityTableEncode = null; }