code: public static String toParams(Map<String, ?> paramMap, Charset charset) {
  		if (CollectionUtil.isEmpty(paramMap)) {
  			return StrUtil.EMPTY;
  		}
  		if (null == charset) {// 默认编码为系统编码
  			charset = CharsetUtil.CHARSET_UTF_8;
  		}
  
  		final StringBuilder sb = new StringBuilder();
  		boolean isFirst = true;
  		String key;
  		Object value;
  		String valueStr;
  		for (Entry<String, ?> item : paramMap.entrySet()) {
  			if (isFirst) {
  				isFirst = false;
  			} else {
  				sb.append("&");
  			}
  			key = item.getKey();
  			value = item.getValue();
  			if (value instanceof Iterable) {
  				value = CollectionUtil.join((Iterable<?>) value, ",");
  			} else if (value instanceof Iterator) {
  				value = CollectionUtil.join((Iterator<?>) value, ",");
  			}
  			valueStr = Convert.toStr(value);
  			if (StrUtil.isNotEmpty(key)) {
  				sb.append(URLUtil.encodeQuery(key, charset)).append("=");
  				if (StrUtil.isNotEmpty(valueStr)) {
  					sb.append(URLUtil.encodeQuery(valueStr, charset));
  				}
  			}
  		}
  		return sb.toString();
  	}
docs: 将Map形式的Form表单数据转换为Url参数形式<br>
  paramMap中如果key为空（null和""）会被忽略，如果value为null，会被做为空白符（""）<br>
  会自动url编码键和值
  
  <pre>
  key1=v1&amp;key2=&amp;key3=v3
  </pre>
  
  @param paramMap 表单数据
  @param charset 编码
  @return url参数