code: @Pure
  	public static String decodeString(byte[] bytes) {
  		final Charset[] prior = getPriorizedDecodingCharsets();
  
  		final String refBuffer = new String(bytes);
  
  		CharBuffer buffer = null;
  
  		for (final Charset charset : prior) {
  			buffer = decodeString(bytes, charset, refBuffer.length());
  			if (buffer != null) {
  				break;
  			}
  		}
  
  		if (buffer == null) {
  			// Decode until one of the available charset replied a value
  			for (final Charset charset : Charset.availableCharsets().values()) {
  				buffer = decodeString(bytes, charset, refBuffer.length());
  				if (buffer != null) {
  					break;
  				}
  			}
  		}
  		// Use the default encoding
  		if (buffer == null) {
  			return refBuffer.trim();
  		}
  		return buffer.toString().trim();
  	}
docs: Decode the specified array of bytes according to
  a charset selection. This function tries
  to decode a string from the given byte array
  with the following charsets (in preferred order):
  <ul>
  <li>the current charset returned by {@link Charset#defaultCharset()},</li>
  <li>OEM United States: IBM437,</li>
  <li>West European: ISO-8859-1,</li>
  <li>one of the chars returned by {@link Charset#availableCharsets()}.</li>
  </ul>
  
  <p>The IBM437 charset was added to support several specific files (Dbase files)
  generated from a GIS.
  
  @param bytes is the array of bytes to decode.
  @return the decoded string with the appropriate charset set.