你这个数据是urlencode了,用url的decode解码就行,也就是 URLDecoder.decode()
你试试这个方法!
String username="张三";
username= URLEncoder.encode(username, "UTF-8");
System.out.println(username);
如若有用,还请采纳!
在Servlet中解决乱码问题的一种常见方法是使用一个自定义编码器(Custom Encoder),该编码器可以将原始字符编码为UTF-8格式。这个编码器需要继承ServletEncoder接口,并实现encode方法。
在你的自定义编码器中,你需要在encode方法中使用InputSource对象读取要编码的字符串,并使用OutputStreamWriter将其编码为UTF-8格式的字符输出流。最后,在将响应发送回客户端时,你需要将响应的字符编码设置为UTF-8格式。
以下是一个简单的示例代码:
```java
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
OutputStream os = response.getOutputStream();
String requestLine = request.getRequestLine().getMethod().toUpperCase();
if ("GET".equals(requestLine)) {
// 读取要编码的字符串
InputStream is = request.getInputStream();
byte[] buffer = new byte[1024];
int bytesRead;
StringBuilder sb = new StringBuilder();
while ((bytesRead = is.read(buffer)) != -1) {
sb.append(new String(buffer, 0, bytesRead));
}
String encodedString = sb.toString();
os.write(encodedString.getBytes("UTF-
```