public static String printable(char ch) {
   if (ch == '\n') {
     return "\\n";
   }
   if (ch == '\r') {
     return "\\r";
   }
   if (ch == '\t') {
     return "\\t";
   }
   if (ch == ' ') {
     return "_";
   }
   if (ch > 127 || ch < 32) {
     StringBuffer sb = new StringBuffer(6);
     sb.append("\\u");
     String hex = Integer.toHexString((int) ch);
     for (int i = 0, len = 4 - hex.length(); i < len; i++) {
       sb.append('0');
     }
     sb.append(hex);
     return sb.toString();
   }
   return null;
 }
  public static String printableWithSpaces(String str) {
    if (str == null || str.length() == 0) {
      return str;
    }

    int len = str.length();
    StringBuffer sb = new StringBuffer(len + 64);
    for (int i = 0; i < len; ++i) {
      char c = str.charAt(i);
      String res = printableWithSpaces(c);
      if (res == null) {
        sb.append(c);
      } else {
        sb.append(res);
      }
    }
    return sb.toString();
  }