我的问题:
try (
PrintWriter writer = response.getWriter();
){
writer.write("<h1>撒大大</h1>");
} catch (IOException e) {
e.printStackTrace();
}
出现问题:
解决方案:
在代码前面加一行:
response.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
try (
PrintWriter writer = response.getWriter();
){
writer.write("<h1>牛客网</h1>");
} catch (IOException e) {
e.printStackTrace();
}
response.setCharacterEncoding(“UTF-8”)的作用是指定服务器响应给浏览器的编码 不指定的话使用iso-8859-1
从本质上说,ISO-8859-1是单字节编码,自身不能显示中文,若要显示中文,必须和其他能显示中文的编码配合,如“GBK”,“UTF-8",以ISO-8859-1编码的文本,都以bytes[]的形式保存,若要显示中文,只需以显示平台的默认编码格式进行解码即可。若仍然以ISO-8859-1格式解码,得到的中文字符肯定是乱码,因为ISO-8859-1自身不能显示中文。
所以中文会变成问号
还有一种解决办法
添加(推荐)
response.setContentType("text/html;charset=utf-8");//作用是指定服务器响应给浏览器的编码。同时,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)
解决中文会变成??的问题