`
hnuxbl
  • 浏览: 8363 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

(转载)Servlet 中文乱码问题及解决方案剖析

 
阅读更多

 

一、常识了解

 

1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立;

2.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码;

3.getBytes() 是通过平台默认字符集进行编码;

 

二、中文乱码出现

 

在学习任何一门技术时,经常会有初学者遇到中文乱码问题,比如MySQL,是因为在安装时没有设置;而在Servlet中,也会遇到中文乱码问题;

比如:

OutputStream out = response.getOutputStream();

out.write(String );

输出中文时可能会出现乱码;

比如:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
          
        OutputStream out = response.getOutputStream();  
        String data = "博客";  
        out.write(data.getBytes("UTF-8"));  
} 
 输出乱码的问题是程序用UTF-8编码,而浏览器用GB2312解码,因此会出现乱码;

 

Servlet乱码分为request乱码和response乱码;

 

 

三、response中文乱码

 

在网上很有效的解决方法是添加:

response.setCharacterEncoding("UTF-8");

解决不了,后来又搜到一条解决方法是:

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

两句都填上,后来终于解决了这个问题;

其实我们应该思考一下本质;

 

问题1:

 

我们这里先来说明一下错误的原因,下图是显示乱码的流程图:

 

response.setContentType("text/html;charset=UTF-8"); 目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;

response.setCharacterEncoding("UTF-8"); 的目的是用于response.getWriter()输出的字符流的乱码问题,如果是response.getOutputStream()是不需要此种解决方案的;因为这句话的意思是为了将response对象中的数据以UTF-8解码后发向浏览器;

 

解决方案流程图:

问题2

问题代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        PrintWriter out = response.getWriter();  
        String data = "博客";  
        out.println(data);    
    }  

 

浏览器输出: ??

原因:"博客"首先被封装在response对象中,因为IE和WEB服务器之间不能传输文本,然后就通过ISO-8859-1进行编码,但是ISO-8859-1中没有“博客”的编码,因此输出“??”表示没有编码;

 

错误代码流程图:

而解决方案是:response.setCharacterEncoding("GB2312"); 设置response使用的码表

 

解决方案流程图:

补充:通过<meta>标签模拟response头;

<meta http-equiv="content-type" content="text/html"/> 等价于 response.setContentType("text/html");

 

四、request乱码问题

 

request请求分为post和get,对于不同的请求方式有不同的解决乱码的方案;

 

1.post请求乱码

 

错误原因:

 

分享到:
评论

相关推荐

    servlet中文乱码问题

    ### Servlet + Tomcat 中文乱码问题解析及解决方案 #### 一、中文乱码问题概述 在使用Servlet和Tomcat进行Web开发时,经常会遇到中文乱码的问题。这主要是因为客户端(如浏览器)与服务器之间使用的字符编码不一致...

    servlet输出JS乱码问题

    知识点:Servlet输出JS乱码问题解析与解决方案 一、Servlet与JS输出背景 Servlet是Java Web应用中的核心组件,主要用于处理客户端发送的HTTP请求,并生成响应。在Web开发中,Servlet经常被用来处理业务逻辑,然后...

    servlet输出中文乱码问题

    ### servlet输出中文乱码问题详解 #### 一、问题背景 在进行Web开发时,特别是使用Java Servlet处理HTTP请求的过程中,经常会遇到输出中文字符时出现乱码的问题。这不仅会影响用户体验,还会对项目的正常运行造成...

    Servlet及jsp解决中文乱码问题

    本文将详细介绍如何在Servlet与JSP中彻底解决中文乱码问题,并给出具体的解决方案。 #### 二、中文乱码的原因分析 中文乱码主要由以下几个原因引起: 1. **服务器端编码设置不正确**:如果服务器端的字符集设置与...

    servlet过滤器解决乱码问题

    #### 二、解决方案:使用Servlet过滤器 Servlet过滤器是一种可以拦截请求和响应的组件,它可以在请求到达目标资源之前或响应返回客户端之前进行预处理。通过配置过滤器来统一处理字符编码问题,可以有效避免乱码的...

    javaweb servlet(jsp)的乱码问题原理及解决

    ### javaweb servlet(jsp)的乱码问题原理及解决 #### HTTP协议的基本理解与乱码问题背景 HTTP协议作为互联网应用中最为广泛使用的通信协议之一,它定义了客户端和服务端之间的交互规则。HTTP请求主要分为GET和...

    JavaWeb开发中的中文乱码问题分析及解决方案.docx

    ### JavaWeb开发中的中文乱码问题分析及解决方案 #### 摘要 在JavaWeb开发过程中,中文乱码问题是常见的技术挑战之一。该问题源于不同组件间的编码方式不一致,尤其是在涉及用户输入、数据库交互以及页面展示等环节...

    jsp中文乱码的解决方案

    本文将深入探讨JSP中文乱码的成因以及提供多种解决方案,帮助开发者有效地处理这类问题。 ### 1. 乱码的可能原因 1. **编码设置不一致**:JSP页面、HTTP请求、响应、数据库等环节的字符编码设置不统一,导致字符在...

    JavaWeb开发中文乱码问题解决方案

    4. **Filter实现中文乱码解决方案**: - 对于请求乱码,可以在`doFilter`方法中获取请求参数,然后通过`setCharacterEncoding`设置请求的编码格式,如`request.setCharacterEncoding("UTF-8")`。 - 对于响应乱码,...

    tomcat与servlet乱码解决办法

    ### Tomcat与Servlet乱码问题解析及解决方案 #### 一、引言 在Web开发过程中,经常遇到的一个问题就是字符编码的问题,特别是在处理中文字符时,如果编码设置不当,很容易出现乱码的情况。本文主要围绕Tomcat服务器...

    Java Web编程中页面跳转乱码问题的解决方案.pdf

    在实际开发中,应该根据具体情况选择合适的编码和乱码解决方案,以确保Web应用的国际化和本地化兼容性。 总的来说,页面跳转乱码问题在Java Web开发中是一个常见但可以解决的问题。通过对编码机制的理解和正确的...

    Java Web开发中的中文乱码问题分析及解决方案.pdf

    Java Web开发中的中文乱码问题是一个常见的困扰,尤其是在处理用户输入和数据显示时。问题的核心在于不同组件和环境之间编码方式的不一致。本文将深入探讨Java Web的编码机制,JSP运行原理,以及如何解决常见的乱码...

    struts 中文乱码问题解决

    本文将深入探讨Struts框架中中文乱码的问题,并提供一系列有效的解决方案。 ### Struts框架简介 Struts是一个开源的MVC(Model-View-Controller)框架,主要用于简化Java Web应用程序的开发。它基于Servlet和JSP...

    java中文乱码解决问题

    JAVA 中文乱码解决问题 JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的...

    jspservlet取参数乱码问题分析

    ### jspservlet取参数乱码问题分析 #### 一、问题本质及原因分析 在Java Web开发中,尤其是在处理中文参数时,经常会遇到一个常见问题——**jspservlet取参数乱码**。这一现象通常发生在当用户从客户端提交包含...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

    Java Web开发中的乱码问题分析及解决方案研究 (1).pdf

    【Java Web开发中的乱码问题】在开发Java Web应用程序时,中文乱码是一个常见的问题,尤其是在使用JSP和Servlet技术时。乱码的出现通常与字符编码有关,开发者需要理解和掌握不同的编码方式来解决这个问题。 【编码...

    解决tomcat中文乱码问题.doc

    ### 解决Tomcat中文乱码问题 在使用Tomcat服务器部署Web应用时,经常会遇到中文乱码的问题。本文将详细探讨几种常见的乱码场景及其解决方案。 #### 一、JSP页面上的中文显示为乱码 **问题描述**:在JSP页面中直接...

    freemarker 中文乱码解决

    在处理Freemarker模板引擎时,中文乱码问题是一个常见的挑战,尤其是在国际化应用中。Freemarker是一款功能强大的模板引擎,被广泛应用于Web开发中,用于动态生成HTML、XML等文本格式的页面。然而,当涉及到非英文...

Global site tag (gtag.js) - Google Analytics