servlet乱码问题怎么解决

img


html中也是utf–8,post编码也改了,但问题仍然存在,怎么解决

你这个数据是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-


```