我的中文表单输出怎么是乱码?

来源:百度知道 编辑:UC知道 时间:2024/05/14 14:50:32
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class acceptUserRegist extends HttpServlet
{
public String codeToString(String str)
{
String s=str;
try
{
byte b[]=s.getBytes("IS0-8859-1");
s=new String(b);
return s;
}catch(Exception e) {
return s;
}
}
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
response.setContentType("text/html;charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html><head><title>接受用户数据</title></head><body>");
out.println("这是新用户提交的数据:");
out.println("用户名:"+codeToString(request.getParameter("username"

我以前也遇到过~
找到的办法,给你试用一下。

这段时间经常看到有人问到web开发中怎么中文总是?号。原因其实很简单,因为大家大多用的是tomcat服务器,而tomcat服务器的默认编码为 iso-8859-1(西欧字符)。就是因为iso-8859-1(西欧字符)编码造成了我们经常看到?号。关于iso-8859-1(西欧字符)更多知识请看《字节,字符和编码》这篇文章。

方法一:最简单也是用的最多的方法。
<%@ page language= "java " pageEncoding= "GBK " %>
或者 <%@ page contenttype= "text/html;charset=gbk ";> 这里可以用gb2312或者gbk,只是gbk比gb2312支持跟多的字符。

这个方法用于jsp页面中的中文显示。

方法二:使用过滤器。
过滤器使用主要针对表单提交,插入数据库的数据都是?号。这也是应为tomcat不按request所指定的编码进行编码,还是自作主张的采用默认编码方式iso-8859-1编码。
编写一个SetCharacterEncodingFilter类。
import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class SetCharacterEncodingFilter implements