/*
Copyright (c) 2003 eInnovation Inc. 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.
*/
/*
* Created on Apr 22, 2003
*
* To change this generated comment go to
* Window>Preferences>Java>Code Generation>Code Template
*/
package com.openedit.modules.edit;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* DOCUMENT ME!
*
* @author avery
*/
public class SpecialCharacter
{
/**
* This function is a work around to deal with non UTF-8 encoding
* It will convert the most commonly found "strange" characters into
* standard HTML text
*
* @param s
*
* @return
*/
public static String escapeSpecialCharacters(String s)
{
if ( s == null )
{
return null;
}
StringBuffer sb = new StringBuffer();
int n = s.length();
for (int i = 0; i < n; i++)
{
char c = s.charAt(i);
if (c > 127)
{
switch (c)
{
// case '<': sb.append("<"); break; //
// case '>': sb.append(">"); break; // //
// case '&': sb.append("&"); break; //
// case '"': sb.append("""); break; //
// case '\'': sb.append("'"); break; //
// try alpha substitutions first
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 '\u00E8':
sb.append("é");
break; //
case '\u00C8':
sb.append("É");
break; //
case '\u00E9':
sb.append("è");
break; //
case '\u00C9':
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 '\u00F5':
sb.append("ô");
break; //
case '\u00D5':
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; // euro
case '\u2013':
sb.append("–");
break; // euro
case '\u2014':
sb.append("—");
break; // euro
case '\u2018':
sb.append("‘");
break; // euro
case '\u2019':
sb.append("’");
break; // euro
case '\u201C':
sb.append("“");
break; // euro
case '\u201D':
sb.append("”");
break; // euro
default:
sb.append("" + Integer.toString(c) + ";");
break; //
}
}
// end if
else
{
if ( c == '&' )
{
sb.append( "&" );
}
else
{
sb.append(c);
}
}
}
return sb.toString();
}
/**
* DOCUMENT ME!
*
* @param inString
*
* @return
*/
public static String toUnicode(String inString)
{
Map matches = new HashMap();
// how big should this number be?
for (int i = 0; i < 10000; i++)
{
String symbol = "" + Integer.toString(i) + ";";
if (inString.indexOf(symbol) > -1)
{
matches.put(symbol, Integer.toHexString(i));
}
}
addSpecialMatch(inString, matches, "'", "'");
addSpecialMatch(inString, matches, "<", "<");
addSpecialMatch(inString, matches, ">", ">");
addSpecialMatch(inString, matches, ""e;", "\"");
addSpecialMatch(inString, matches, "&", "&");
addSpecialMatch(inString, matches, "à", "\u00E0"); //
addSpecialMatch(inString, matches, "À", "\u00C0"); //
addSpecialMatch(inString, matches, "â", "\u00E2"); //
addSpecialMatch(inString, matches, "Â", "\u00C2"); //
addSpecialMatch(inString, matches, "ä", "\u00E4"); //
addSpecialMatch(inString, matches, "Ä", "\u00C4"); //
addSpecialMatch(inString, matches, "å", "\u00E5"); //
addSpecialMatch(inString, matches, "Å", "\u00C5"); //
addSpecialMatch(inString, matches, "æ", "\u00E6"); //
addSpecialMatch(inString, matches, "Æ", "\u00C6"); //
addSpecialMatch(inString, matches, "ç", "\u00E7"); //
addSpecialMatch(inString, matches, "Ç", "\u00C7"); //
addSpecialMatch(inString, matches, "é", "\u00E8"); //
addSpecialMatch(inString, matches, "É", "\u00C8"); //
addSpecialMatch(inString, matches, "è", "\u00E9"); //
addSpecialMatch(inString, matches, "È", "\u00C9"); //
addSpecialMatch(inString, matches, "ê", "\u00EA"); //
addSpecialMatch(inString, matches, "Ê", "\u00CA"); //
addSpecialMatch(inString, matches, "ë", "\u00EB"); //
addSpecialMatch(inString, matches, "Ë", "\u00CB"); //
addSpecialMatch(inString, matches, "ï", "\u00EF"); //
addSpecialMatch(inString, matches, "Ï", "\u00CF"); //
addSpecialMatch(inString, matches, "ô", "\u00F5"); //
addSpecialMatch(inString, matches, "Ô", "\u00D5"); //
addSpecialMatch(inString, matches, "ö", "\u00F6"); //
addSpecialMatch(inString, matches, "Ö", "\u00D6"); //
addSpecialMatch(inString, matches, "ø", "\u00F8"); //
addSpecialMatch(inString, matches, "Ø", "\u00D8"); //
addSpecialMatch(inString, matches, "ß", "\u00DF"); //
addSpecialMatch(inString, matches, "ù", "\u00F9"); //
addSpecialMatch(inString, matches, "Ù", "\u00D9"); //
addSpecialMatch(inString, matches, "û", "\u00FB"); //
addSpecialMatch(inString, matches, "Û", "\u00DB"); //
addSpecialMatch(inString, matches, "ü", "\u00FC"); //
addSpecialMatch(inString, matches, "Ü", "\u00DC"); //
addSpecialMatch(inString, matches, "®", "\u00AE"); //
addSpecialMatch(inString, matches, "©", "\u00A9"); //
addSpecialMatch(inString, matches, "€", "\u20AC"); // euro
for (Iterator iter = matches.keySet().iterator(); iter.hasNext();)
{
String symbol = (String) iter.next();
inString = inString.replaceAll(symbol, (String) matches.get(symbol));
}
return inString;
}
private static void addSpecialMatch(
String inString, Map matches, String inSymbol, String inUnicode)
{
if (inString.indexOf(inSymbol) > -1)
{
matches.put(inSymbol, inUnicode);
}
}
}