code: private static String getEscapedCharacter(char c) throws IOException {
  		switch(c) {
  			case '\\' : return "\\\\";
  			case '\'' : return "\\'";
  			case '"'  : return "\\\"";
  			case '?'  : return "\\?";
  		}
  		if(
  			(c >= 0x20 && c <= 0x7E) // common case first
  			|| (c >= 0xA0 && c <= 0xFFFD)
  		) return null;
  		// 01 to 1F - control characters
  		if(c >= 0x01 && c <= 0x1F) return LOW_CONTROL[c - 0x01];
  		// 7F to 9F - control characters
  		if(c >= 0x7F && c <= 0x9F) return HIGH_CONTROL[c - 0x7F];
  		if(c == 0xFFFE) return "\\uFFFE";
  		if(c == 0xFFFF) return "\\uFFFF";
  		assert c == 0 : "The only character not supported is NULL (\\x00), got " + Integer.toHexString(c);
  		throw new IOException(ApplicationResources.accessor.getMessage("ShValidator.invalidCharacter", Integer.toHexString(c)));
  	}
docs: Encodes a single character and returns its String representation
  or null if no modification is necessary.  Implemented as
  <a href="https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html">ANSI-C quoting</a>.
  The only character not supported is NULL (\x00).
  
  @see ShValidator#checkCharacter(char)
  
  @throws  IOException  if any text character cannot be converted for use in a shell script