为什么输出的汉字为问号

为什么输出的汉字为问号

package com.immoc.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ComputerServlet extends HttpServlet{

	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String n=request.getParameter("n");
		int i=Integer.parseInt(n);
		int sum=0;
		for(int j=0;j<=i;j++) {
			sum=j+sum;
		}
		String a="<h1 style='color:red'>"+n+"以内自然数之和为:"+sum+"</h1><hr/>";
		System.out.println("返回浏览器的响应数据为:"+a);
		PrintWriter out=response.getWriter();
		out.println(a);
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>ServletProj</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>ComputerServlet</servlet-name>
  	<servlet-class>com.immoc.servlet.ComputerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>ComputerServlet</servlet-name>
  	<url-pattern>/ComputerServlet</url-pattern>
  </servlet-mapping>
</web-app>

http://img1.sycdn.imooc.com//climg/5ee2e5780966760802840093.jpg输出的结果汉字就为问号了,在xml文件中有设置enconding="UTF-8"

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕珊 2020-06-12 12:00:50

同学,你好!在xml文件中设置字符集,只是对xml文件有效。如果要让输出的内容支持中文,需要为response设置字符集为utf-8,可以在service()方法的开头加上如下语句:

response.setCharacterEncoding("UTF-8");

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕724 #1
    加上了这个语句也不行,我在eclipse中的preference也设置了字符集为UTF-8,输出的语句还是乱码。
    2020-06-13 09:50:51
  • 好帮手慕珊 回复 提问者 慕724 #2
    同学,你好!再加上这句 response.setHeader("contentType", "text/html; charset=utf-8");设置一下浏览器的编码方式。祝学习愉快!
    2020-06-13 10:36:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师