code: public static void encodeString(final StringBuilder sb, final String s) {
  		if (s == null) {
  			return;
  		}
  		final int len = s.length();
  		// réserve un peu plus de place dans le StringBuilder
  		sb.ensureCapacity(sb.length() + len + len / 4);
  		int i;
  		int index;
  		char c;
  		for (i = 0; i < len; i++) {
  			c = s.charAt(i);
  			// petite optimisation (qui represente 90% des cas...)
  			if (isSimpleLetterOrDigit(c)) {
  				sb.append(c);
  			} else {
  				// cherche dans le tableau des caractères
  				index = Arrays.binarySearch(TO_REPLACE, c);
  				if (index >= 0) {
  					// si trouvé, append la chaîne remplaçante
  					sb.append(REPLACE_BY[index]);
  				} else if (c < '\u0020' || c > '\u007e') {
  					// si c'est un caractère bizarre non reconnu, on code son numéro décimal (en charset iso-8859-1)
  					sb.append("&#").append(Integer.toString(c)).append(';');
  				} else {
  					// sinon append le caractère sans le modifier
  					sb.append(c); // nécessite un charset système genre windows-1252
  				}
  			}
  		}
  	}
docs: Append une chaine à un StringBuilder apres l'avoir encodée. Plus la chaine à encoder est longue, plus les gains de perfs sont sensibles.
  
  @param sb
  String StringBuilder à appender.
  @param s
  String Chaine à encoder et à ajouter à <CODE>sb</CODE>