UrlEncodeUtil.java 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package com.zswl.dataservice.utils.net.apache;
  2. import lombok.SneakyThrows;
  3. import java.net.URLEncoder;
  4. import java.util.Collections;
  5. import java.util.HashSet;
  6. import java.util.Set;
  7. /**
  8. * URL编码工具
  9. */
  10. public class UrlEncodeUtil {
  11. private final static String[] NotEncodeCharset = new String[]{
  12. ":", "/", "\\", "&", "?", "="
  13. };
  14. private final static Set<Integer> NotEncodeAscii = Collections.synchronizedSet(new HashSet<>());
  15. static {
  16. for (String s : NotEncodeCharset) {
  17. try {
  18. NotEncodeAscii.add((int) s.getBytes("UTF-8")[0]);
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. }
  24. @SneakyThrows
  25. public static String encode(String url) {
  26. StringBuffer sb = new StringBuffer();
  27. for (int i = 0; i < url.length(); i++) {
  28. String str = url.substring(i, i + 1);
  29. int ascii = (int) str.getBytes("UTF-8")[0];
  30. // 0 - 9 , A - Z , a = z , ( NotEncodeCharset )
  31. if ((ascii >= 48 && ascii <= 57) || (ascii >= 65 && ascii <= 90) || (ascii >= 97 && ascii <= 122) || (NotEncodeAscii.contains(ascii))) {
  32. sb.append(str);
  33. } else {
  34. sb.append(URLEncoder.encode(str, "UTF-8"));
  35. }
  36. }
  37. return sb.toString();
  38. }
  39. }