Response输出字符流(中文乱码问题及解决办法)

news/2025/1/24 1:18:35/

目录

  • 代码
  • 中文乱码原因
  • 解决办法
    • 1. 获取流对象之前,设置流的编码,由默认编码ISO-8859-1设置为GBK
    • 2.告诉浏览器,服务器发送的消息体数据的编码。建议浏览器使用该编码解码
    • 3.更简便的方法(重点)
  • 最终代码

代码

  • 步骤
    1. 获取字符输出流PrintWriter writer = resp.getWriter();
    2. 输出数据writer.write("你好,中国!");writer.write("hello China!");
@WebServlet("/responseDemo3")
public class ResponseDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取字符输出流PrintWriter writer = resp.getWriter();//输出数据writer.write("你好,中国!");writer.write("hello China!");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}

访问http://localhost:8080/day15/responseDemo3的结果,出现了中文乱码

??????!hello China!
  • 中文乱码原因

    1. 服务器的编码格式(即Tomcat的编码格式)为ISO-8859-1,无法解析中文
    2. 浏览器的编码格式为GBK,与服务器的编码格式不同

解决办法

1. 获取流对象之前,设置流的编码,由默认编码ISO-8859-1设置为GBK

resp.setCharacterEncoding("GBK");

结果:虽然解决了中文乱码的上诉两个问题,但是如果浏览器的编码格式为utf-8,则不能解决第二条问题

  • 假如浏览器的编码格式为utf-8,依然如上设置,就会出现如下结果
浣犲ソ锛屼腑鍥�!hello China!

2.告诉浏览器,服务器发送的消息体数据的编码。建议浏览器使用该编码解码

resp.setHeader("content-type","text/html;charset=utf-8");

此方法就是设置响应头content-type的值为text/html;charset=utf-8

3.更简便的方法(重点)

直接设置响应头content-type的值为text/html;charset=utf-8

resp.setContentType("text/html;charset=utf-8");

最终代码

@WebServlet("/responseDemo3")
public class ResponseDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取流对象之前,设置流的编码,由默认编码ISO-8859-1设置为GBK//resp.setCharacterEncoding("utf-8");//告诉浏览器,服务器发送的消息体数据的编码。建议浏览器使用该编码解码//resp.setHeader("content-type","text/html;charset=utf-8");//简单的方式设置编码resp.setContentType("text/html;charset=utf-8");//获取字符输出流PrintWriter writer = resp.getWriter();//输出数据writer.write("你好,中国!");writer.write("hello China!");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}

http://www.ppmy.cn/news/40441.html

相关文章

DnCNN-pytorch版本代码运行环境配置

一、DnCNN-pytorch相关下载 (1)DnCNN-pytorch版本代码下载 https://download.csdn.net/download/qq_41104871/87457414 (2)GPU版本的torch0.4.1下载 https://download.csdn.net/download/qq_41104871/87658469 (3)相对应的torchvision0.2.1下载 https://download.csdn…

whisper 语音识别AI 声音To文字

whisper介绍 Whisper 是一个由 OpenAI 训练并开源的神经网络,功能是语音识别,能把语音转换为文字,在英语语音识别方面的稳健性和准确性接近人类水平。 1、Whisper支持语音转录和翻译两项功能并接受各种语音格式,模型中、英、法、德、意、日等主流语言上…

【总结】Linux vim编辑文件中文乱码cat正常(亲测有效)

最近为了测系统的兼容性,公司运维装了一台统信UOS arm-64的系统,在该操作系统上部署时,发现vim 编辑文件中文乱码,但是使用cat 查看文件,却是正常。 网上搜索了一番,终于解决问题。 查找vimrc 所在位置 …

第一个禁止ChatGPT的西方国家

意大利成为第一个有效禁止 ChatGPT 的西方国家。 由于可能违反隐私和数据法,该国的数据监管机构已下令开发聊天机器人的 OpenAI 停止运营。 意大利数据保护局 (GPDP) 提到了一些担忧,包括大量收集用户数据和存储以训练 AI 算法。 ChatGPT 是一种大型语…

Java阶段一Day22

Java阶段一Day22 文章目录Java阶段一Day22线程安全synchronized教师总结新单词多线程多线程并发安全问题概念例synchronized关键字同步方法同步块在静态方法上使用synchronized互斥锁总结重点:多线程并发安全问题聊天室(续)实现服务端发送消息给客户端服务端转发消息给所有客户…

若依移动端Ruoyi-App——字典使用

1. 引入dict 将若依前后端分离中的dict文件夹拷贝到api的system里 2.在页面中引入方法 import { getDicts } from "/api/system/dict/data"; 3. 前端 <span>{{statusType}}</span> 4. 加载数据字典 export default {data() {return {statusOptions…

记一次 .NET 某医疗住院系统 崩溃分析

一&#xff1a;背景 1. 讲故事 最近收到了两起程序崩溃的dump&#xff0c;查了下都是经典的 double free 造成的&#xff0c;蛮有意思&#xff0c;这里就抽一篇出来分享一下经验供后面的学习者避坑吧。 二&#xff1a;WinDbg 分析 1. 崩溃点在哪里 windbg 带了一个自动化分…

1、vscode搭建C++开发环境及一些配置文件的含义

文章目录一、vscode搭建开发环境1、下载和配置MinGW-w64 编译器套件2、安装到电脑中3、配置环境变量4、测试是否安装成功5、vscode上安装C/C插件二 、配置编译环境时各个文件的含义1、task.json&#xff1a;此文件告诉VS代码如何构建&#xff08;编译&#xff09;程序&#xff…