如下代码中返回的页面中的中文都变成了问号,怎么回事?
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.util.regex.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
public class AddTopicServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
      boolean bIsFileSaved = true;
    
      String result = "Add topic succeesfully.";
      String title = "";
     String module = "";
      String catalog = "";
      String author = "";
      String content = "";
      String additional = "";
      
      // save file to local disk
      try {
        String localFileDir = "C:/Program Files/Apache Software Foundation/Tomcat 4.1/webapps/examples/";
        
//    Create a factory for disk-based file items
        DiskFileItemFactory factory = new DiskFileItemFactory();//       Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);//       Parse the request
        List items = upload.parseRequest(request); 
        
//      Process the uploaded items
        Iterator iter = items.iterator();
        while (iter.hasNext()) {
            FileItem item = (FileItem) iter.next();            if (item.isFormField()) {
              String name = item.getFieldName();
                String value = item.getString();                if (name.compareToIgnoreCase("title") == 0)
                 title = value;
                else if (name.compareToIgnoreCase("author") == 0)
                 author = value;
                else if (name.compareToIgnoreCase("module") == 0)
                 module = value;
                else if (name.compareToIgnoreCase("catalog") == 0)
                 catalog = value;
                else if (name.compareToIgnoreCase("content") == 0)
                 content = value;
                else if (name.compareToIgnoreCase("path") == 0)
                 localFileDir = value;
                else
                 System.out.println("Illegal filed (" + name + "," + value + ")");
            }
        }    
        
//      正则匹配,过滤路径取文件名
        String regExp=".+\\\\(.+)$";
        Pattern p = Pattern.compile(regExp);        iter = items.iterator();
        while (iter.hasNext()) {
            FileItem item = (FileItem) iter.next();            if (!item.isFormField()) {
             Matcher m = p.matcher(item.getName());
                if (m.find()){
                    additional = "doc/" + m.group(1);
                    item.write(new File(localFileDir + "/" + additional));
                }
            }
        }    
      } catch (Exception e) {
       e.printStackTrace();
       result = "Failed to add topic, beause writing file error.";
       bIsFileSaved = false;
      }      // add record to mysql
      if (bIsFileSaved) {
      if (title.length() == 0)
       title = "No title";
      
      TopicManager mgr = new TopicManager();
      if (!mgr.add(title, author, module, catalog, content, additional)) 
       result = "Failed to add topic, beause Connect mysql failed.";
      }
      
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      out.println("<html>");
      out.println("<head>");
      out.println("<META content=\"text/html; charset=gb2312\" http-equiv=Content-Type>");
      out.println("<title>Request Parameters Example</title>");
      out.println("</head>");
      out.println("<body>");
      out.println("<p>" + result);
      out.println("</body>");
      out.println("</html>");
    }    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        doGet(request, response);
    }
    
}