1 12 13 19 package com.openedit.modules.edit; 20 21 import java.util.HashMap ; 22 import java.util.Iterator ; 23 import java.util.Map ; 24 25 26 31 public class SpecialCharacter 32 { 33 42 public static String escapeSpecialCharacters(String s) 43 { 44 if ( s == null ) 45 { 46 return null; 47 } 48 StringBuffer sb = new StringBuffer (); 49 int n = s.length(); 50 51 for (int i = 0; i < n; i++) 52 { 53 char c = s.charAt(i); 54 55 if (c > 127) 56 { 57 switch (c) 58 { 59 case '\u00E0': 66 sb.append("à"); 67 68 break; 70 case '\u00C0': 71 sb.append("À"); 72 73 break; 75 case '\u00E2': 76 sb.append("â"); 77 78 break; 80 case '\u00C2': 81 sb.append("Â"); 82 83 break; 85 case '\u00E4': 86 sb.append("ä"); 87 88 break; 90 case '\u00C4': 91 sb.append("Ä"); 92 93 break; 95 case '\u00E5': 96 sb.append("å"); 97 98 break; 100 case '\u00C5': 101 sb.append("Å"); 102 103 break; 105 case '\u00E6': 106 sb.append("æ"); 107 108 break; 110 case '\u00C6': 111 sb.append("Æ"); 112 113 break; 115 case '\u00E7': 116 sb.append("ç"); 117 118 break; 120 case '\u00C7': 121 sb.append("Ç"); 122 123 break; 125 case '\u00E8': 126 sb.append("é"); 127 128 break; 130 case '\u00C8': 131 sb.append("É"); 132 133 break; 135 case '\u00E9': 136 sb.append("è"); 137 138 break; 140 case '\u00C9': 141 sb.append("È"); 142 143 break; 145 case '\u00EA': 146 sb.append("ê"); 147 148 break; 150 case '\u00CA': 151 sb.append("Ê"); 152 153 break; 155 case '\u00EB': 156 sb.append("ë"); 157 158 break; 160 case '\u00CB': 161 sb.append("Ë"); 162 163 break; 165 case '\u00EF': 166 sb.append("ï"); 167 168 break; 170 case '\u00CF': 171 sb.append("Ï"); 172 173 break; 175 case '\u00F5': 176 sb.append("ô"); 177 178 break; 180 case '\u00D5': 181 sb.append("Ô"); 182 183 break; 185 case '\u00F6': 186 sb.append("ö"); 187 188 break; 190 case '\u00D6': 191 sb.append("Ö"); 192 193 break; 195 case '\u00F8': 196 sb.append("ø"); 197 198 break; 200 case '\u00D8': 201 sb.append("Ø"); 202 203 break; 205 case '\u00DF': 206 sb.append("ß"); 207 208 break; 210 case '\u00F9': 211 sb.append("ù"); 212 213 break; 215 case '\u00D9': 216 sb.append("Ù"); 217 218 break; 220 case '\u00FB': 221 sb.append("û"); 222 223 break; 225 case '\u00DB': 226 sb.append("Û"); 227 228 break; 230 case '\u00FC': 231 sb.append("ü"); 232 233 break; 235 case '\u00DC': 236 sb.append("Ü"); 237 238 break; 240 case '\u00AE': 241 sb.append("®"); 242 243 break; 245 case '\u00A9': 246 sb.append("©"); 247 248 break; 250 case '\u20AC': 251 sb.append("€"); 252 253 break; 255 case '\u2013': 256 sb.append("–"); 257 258 break; 260 case '\u2014': 261 sb.append("—"); 262 263 break; 265 case '\u2018': 266 sb.append("‘"); 267 268 break; 270 case '\u2019': 271 sb.append("’"); 272 273 break; 275 case '\u201C': 276 sb.append("“"); 277 278 break; 280 case '\u201D': 281 sb.append("”"); 282 283 break; 285 default: 286 sb.append("&#" + Integer.toString(c) + ";"); 287 288 break; } 290 } 291 292 else 294 { 295 if ( c == '&' ) 296 { 297 sb.append( "&" ); 298 } 299 else 300 { 301 sb.append(c); 302 } 303 } 304 } 305 306 return sb.toString(); 307 } 308 309 316 public static String toUnicode(String inString) 317 { 318 Map matches = new HashMap (); 319 320 for (int i = 0; i < 10000; i++) 322 { 323 String symbol = "&#" + Integer.toString(i) + ";"; 324 325 if (inString.indexOf(symbol) > -1) 326 { 327 matches.put(symbol, Integer.toHexString(i)); 328 } 329 } 330 331 addSpecialMatch(inString, matches, "'", "'"); 332 addSpecialMatch(inString, matches, "<", "<"); 333 addSpecialMatch(inString, matches, ">", ">"); 334 addSpecialMatch(inString, matches, ""e;", "\""); 335 addSpecialMatch(inString, matches, "&", "&"); 336 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"); 375 for (Iterator iter = matches.keySet().iterator(); iter.hasNext();) 376 { 377 String symbol = (String ) iter.next(); 378 inString = inString.replaceAll(symbol, (String ) matches.get(symbol)); 379 } 380 381 return inString; 382 } 383 384 private static void addSpecialMatch( 385 String inString, Map matches, String inSymbol, String inUnicode) 386 { 387 if (inString.indexOf(inSymbol) > -1) 388 { 389 matches.put(inSymbol, inUnicode); 390 } 391 } 392 } 393 | Popular Tags |