docs: public static char getFirstLetter(char ch) {
  		if (ch >= 'a' && ch <= 'z') {
  			return ch;
  		}
  		if (ch >= 'A' && ch <= 'Z') {
  			return Character.toLowerCase(ch);
  		}
  		final byte[] bys = String.valueOf(ch).getBytes(CharsetUtil.CHARSET_GBK);
  		if (bys.length == 1) {
  			return ch;
  		}
  		int count = (bys[0] + 256) * 256 + bys[1] + 256;
  		if (count < 45217) {
  			return ch;
  		} else if (count < 45253) {
  			return 'a';
  		} else if (count < 45761) {
  			return 'b';
  		} else if (count < 46318) {
  			return 'c';
  		} else if (count < 46826) {
  			return 'd';
  		} else if (count < 47010) {
  			return 'e';
  		} else if (count < 47297) {
  			return 'f';
  		} else if (count < 47614) {
  			return 'g';
  		} else if (count < 48119) {
  			return 'h';
  		} else if (count < 49062) {
  			return 'j';
  		} else if (count < 49324) {
  			return 'k';
  		} else if (count < 49896) {
  			return 'l';
  		} else if (count < 50371) {
  			return 'm';
  		} else if (count < 50614) {
  			return 'n';
  		} else if (count < 50622) {
  			return 'o';
  		} else if (count < 50906) {
  			return 'p';
  		} else if (count < 51387) {
  			return 'q';
  		} else if (count < 51446) {
  			return 'r';
  		} else if (count < 52218) {
  			return 's';
  		} else if (count < 52698) {
  			return 't';
  		} else if (count < 52980) {
  			return 'w';
  		} else if (count < 53689) {
  			return 'x';
  		} else if (count < 54481) {
  			return 'y';
  		} else if (count < 55290) {
  			return 'z';
  		}
  		return ch;
  	}