Java URLEncoder.encode()让加号变空格,怎么解决这个问题
时间: 2023-08-03 19:36:57 浏览: 355
在 Java 中,URLEncoder.encode() 方法会将符号 "+" 编码成空格,这是因为在 URL 中,空格应该被编码成 "%20",而加号则不需要编码。如果需要将加号保留,可以使用以下方法:
1. 在编码前将加号替换成其他字符(比如 "#"),然后在解码后再将其替换回来。
```java
String original = "hello+world";
String encoded = URLEncoder.encode(original.replace("+", "#"), "UTF-8");
String decoded = URLDecoder.decode(encoded, "UTF-8").replace("#", "+");
System.out.println(decoded); // 输出:hello+world
```
2. 使用 Base64 编码将原始字符串转换成字节数组,然后将字节数组转换成字符串时指定编码方式。
```java
import java.util.Base64;
String original = "hello+world";
String encoded = Base64.getEncoder().encodeToString(original.getBytes("UTF-8"));
String decoded = new String(Base64.getDecoder().decode(encoded), "UTF-8");
System.out.println(decoded); // 输出:hello+world
```
这两种方法都可以保证在编码和解码过程中不丢失加号。
阅读全文