code: public static void handleBOMUTF8(String[] vales, int i) {
          byte[] buf = vales[i].getBytes();
          if (LOG.isDebugEnabled()) {
              StringBuilder sb = new StringBuilder();
              for (byte b : buf) {
                  sb.append(Byte.toString(b));
                  sb.append(" ");
              }
              LOG.debug(vales[i]);
              LOG.debug(sb.toString());
          }
          if (buf[0] == (byte) 0xEF && buf[1] == (byte) 0xBB
              && buf[2] == (byte) 0xBF) {
              vales[i] = new String(buf, 3, buf.length - 3);
          }
      }
docs: Oracle jdk bug 4508058: UTF-8 encoding does not recognize
  initial BOM, and it will not be fixed.
  Work Around :
  Application code must recognize and skip the BOM itself.