Java Servlet输出中文乱码问题解决方案

 更新时间:2020年04月14日 14:37:44   作者:时光spring  
这篇文章主要介绍了Java Servlet输出中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.现象:字节流向浏览器输出中文,可能会乱码(IE低版本)

private void byteMethod(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
    String date = "你好";
    ServletOutputStream outputStream = response.getOutputStream();
    outputStream.write(date.getBytes();
  }

原因:服务器端和浏览器端的编码格式不一致。

解决方法:服务器端和浏览器端的编码格式保持一致

private void byteMethod(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
    String date = "你好";
    ServletOutputStream outputStream = response.getOutputStream();
    // 浏览器端的编码
    response.setHeader("Content-Type", "text/html;charset=utf-8");
    // 服务器端的编码
    outputStream.write(date.getBytes("utf-8"));
  }

或者简写如下

private void byteMethod(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
    String date = "你好";
    ServletOutputStream outputStream = response.getOutputStream();
    // 浏览器端的编码
    response.setContentType("text/html;charset=utf-8");
    // 服务器端的编码
    outputStream.write(date.getBytes("utf-8"));
  }

2.现象:字符流向浏览器输出中文出现 ???乱码

private void charMethod(HttpServletResponse response) throws IOException {
    String date = "你好";
    PrintWriter writer = response.getWriter();
    writer.write(date);
  }

原因:表示采用ISO-8859-1编码形式,该编码不支持中文

解决办法:同样使浏览器和服务器编码保持一致

private void charMethod(HttpServletResponse response) throws IOException {
    // 处理服务器编码
     response.setCharacterEncoding("utf-8");
    // 处理浏览器编码
     response.setHeader("Content-Type", "text/html;charset=utf-8");
    String date = "中国";
    PrintWriter writer = response.getWriter();
    writer.write(date);
  }

注意!setCharacterEncoding()方法要在写入之前使用,否则无效!!!

或者简写如下

private void charMethod(HttpServletResponse response) throws IOException {
    response.setContentType("text/html;charset=GB18030");
    String date = "中国";
    PrintWriter writer = response.getWriter();
    writer.write(date);
  }

总结:解决中文乱码问题使用方法 response.setContentType("text/html;charset=utf-8");可解决字符和字节的问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 使用spring security BCryptPasswordEncoder接入系统

    使用spring security BCryptPasswordEncoder接入系统

    这篇文章主要介绍了使用spring security BCryptPasswordEncoder接入系统方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • SSH框架网上商城项目第10战之搭建商品类基本模块

    SSH框架网上商城项目第10战之搭建商品类基本模块

    这篇文章主要为大家详细介绍了SSH框架网上商城项目第10战之搭建商品类基本模块的相关资料,有一定的实用性,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Java实现二叉查找树的增删查详解

    Java实现二叉查找树的增删查详解

    二叉查找树(ADT)是一个具有对于树种的某个节点X,它的左节点都比X小,它的右节点都比X大的二叉树。本文将用Java实现二叉查找树的增删查,需要的可以参考一下
    2022-06-06
  • 详解Java的堆内存与栈内存的存储机制

    详解Java的堆内存与栈内存的存储机制

    这篇文章主要介绍了Java的堆内存与栈内存的存储机制,包括JVM的内存优化和GC等相关方面内容,需要的朋友可以参考下
    2016-01-01
  • 解读RabbitMQ和kafka的相同点和不同点是什么

    解读RabbitMQ和kafka的相同点和不同点是什么

    RabbitMQ和Kafka都是消息中间件,支持分布式系统、高可用性和可靠性,RabbitMQ使用队列模型,适合复杂路由场景;Kafka使用主题-分区模型,适合大规模数据流处理,RabbitMQ在低延迟方面表现更好,Kafka在高吞吐量方面表现更好
    2024-12-12
  • SpringBoot整合ShardingSphere5.x实现数据加解密功能(最新推荐)

    SpringBoot整合ShardingSphere5.x实现数据加解密功能(最新推荐)

    这篇文章主要介绍了SpringBoot整合ShardingSphere5.x实现数据加解密功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Java使用@Retryable注解实现HTTP请求重试

    Java使用@Retryable注解实现HTTP请求重试

    HTTP调用是Java应用与外部API进行交互时重要的访问方式之一,为了确保在遇到临时性问题时能自动重试,我们可以设计一个灵活的重试机制,在Java中,我们可以通过注解来实现这一功能,文将介绍如何使用注解@Retryable来实现HTTP调用的重试机制,需要的朋友可以参考下
    2024-10-10
  • MyBatis-Plus插件机制及通用Service新功能

    MyBatis-Plus插件机制及通用Service新功能

    这篇文章主要介绍了MyBatis-Plus插件机制以及通用Service、新功能,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 解决for循环为空不需要判断的问题

    解决for循环为空不需要判断的问题

    这篇文章主要介绍了解决for循环为空不需要判断的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 详解springboot设置默认参数Springboot.setDefaultProperties(map)不生效解决

    详解springboot设置默认参数Springboot.setDefaultProperties(map)不生效解决

    这篇文章主要介绍了详解springboot设置默认参数Springboot.setDefaultProperties(map)不生效解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论