`
bjmike
  • 浏览: 282999 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat中文乱码问题的原理和解决方法

阅读更多
自从接触Java和JSP以来,就不断与Java的中文乱码问题打交道,现在终于得到了彻底的解决,现将我们的解决心得与大家共享。

  一、Java中文问题的由来

  Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。

  首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。

  本文要重点讨论的是第二类乱码,即Java程序与其他存储媒介交互时产生的乱码。很多存储媒介,如数据库,文件,流等的存储方式都是基于字节流的,Java程序与这些媒介交互时就会发生字符(char)与字节(byte)之间的转换,例如从页面提交表单中提交的数据在Java程序里显示乱码等情况。

  如果在以上转换过程中使用的编码方式与字节原有的编码不一致,很可能就会出现乱码。

  二、解决方法

  对于流行的Tomcat来说,有以下两种解决方法:

  1) 更改 D:\Tomcat\conf\server.xml,指定浏览器的编码格式为“简体中文”:

  方法是找到 server.xml 中的

    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />

  标记,粗体字是我添加的。

  可以这样验证你的更改是否成功:在更改前,在你出现乱码的页面的IE浏览器,点击菜单“查看|编码”,会发现“西欧(ISO)”处于选中状态。而更改后,点击菜单“查看|编码”,会发现“简体中文(GB2312)”处于选中状态。

  b)更该 Java 程序,我的程序是这样的:

public class ThreeParams extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      response.setContentType("text/html; charset=GBK");
      ...
  } 
}

  粗体字是必需要有的,它的作用是让浏览器把Unicode字符转换为GBK字符。这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了。
分享到:
评论

相关推荐

    如何解决Tomcat下中文乱码问题?

    总结来说,解决Tomcat下的中文乱码问题,关键在于确保JSP页面的编码与服务器设置一致,并在处理表单提交时正确设置请求的字符编码。在实际开发中,推荐使用UTF-8作为统一的编码标准,因为UTF-8能够兼容各种语言,...

    java中文乱码之解决URL中文乱码问题的方法

    总之,解决Java中的URL中文乱码问题需要理解URL编码的原理,并在客户端和服务器端采取相应的措施,确保编码和解码的一致性。无论是通过JavaScript编码、Java服务器端解码,还是调整服务器配置,关键在于确保字符集的...

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

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

    android客户端向服务器提交请求的中文乱码问题

    在Android客户端向服务器提交请求时,遇到中文乱码问题是一个常见的困扰。...在本例中,使用`URLEncoder`和`URLDecoder`进行编码和解码,有效地解决了Android客户端与Tomcat服务器之间的中文乱码问题。

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

    在JavaWeb开发中,中文乱码问题是一个...总之,解决JavaWeb开发中的中文乱码问题,关键在于理解和掌握字符编码,以及熟练使用过滤器技术。通过以上方法,开发者可以有效地防止和解决乱码问题,提高应用程序的用户体验。

    J2ee应用中文乱码问题解决方案.doc

    总结来说,解决J2EE应用中文乱码问题的关键在于理解字符集的原理,并在每个可能引起乱码的环节进行相应的编码设置。通过统一编码标准,尤其是使用广泛支持的UTF-8,可以显著减少乱码出现的可能性。在开发过程中,...

    jsp传值中文乱码问题解决方法示例介绍.docx

    在开发Web应用时,尤其是使用Java的JSP技术,开发者经常会遇到中文乱码的问题。这是因为字符编码不一致导致的,特别是在处理用户输入或从数据库获取数据时。...同时,理解字符编码原理,有助于更好地排查和解决问题。

    myeclipse中文乱码的解决方法

    本文将深入探讨"myeclipse中文乱码的解决方法",帮助你解决在使用MyEclipse过程中遇到的中文显示异常问题。 1. **问题背景** 当你在MyEclipse中创建或打开包含中文字符的文件时,可能会发现显示为乱码,这通常是...

    关于Java+Web技术开发中中文乱码问题的深入探讨.pdf

    学习 Java 中文编码的原理,可以更好地理解中文乱码问题的成因和解决方法。 中文乱码问题是 Java Web 技术开发中一个常见的问题,但通过配置 Tomcat 的编码方式、在 Java 代码中指定编码方式、使用 Unicode 字符等...

    struts2的中文乱码问题解决

    ### Struts2中文乱码问题解决方案 在使用Struts2框架进行Web开发的过程中,中文乱码问题是一个常见的挑战。这不仅影响用户体验,还可能导致数据不一致等问题。为了解决这一问题,我们需要理解其背后的原理,并采取...

    JSP中文乱码问题解决办法

    总的来说,解决JSP中文乱码问题的关键在于理解字符编码的工作原理,以及在各个层面上(浏览器、服务器、数据库)如何设置和转换编码。通过正确设置和处理,可以确保中文字符在Web应用中的正确显示和处理。

    Tomcat和jsp的乱码处理和Myeclipse光标跳动的解决

    通过这些步骤,你应该能够成功地解决Tomcat中的中文乱码问题,以及Myeclipse中光标跳动的困扰。在实际开发过程中,遇到此类问题时,理解其背后原理并针对性地调整配置是解决问题的关键。希望这些信息对你有所帮助,...

    html 中文乱码 HTML超链接中文乱码问题分析及解决方法

    总结来说,解决HTML超链接中文乱码的关键在于使用`URLEncoder.encode()`方法时指定正确的字符集,并在前端和后端保持一致。此外,理解URL编码的原理以及HTTP协议对URL的限制也是非常重要的,这样才能确保数据在传输...

    中文乱码解决方案.pdf

    为了解决中文乱码问题,我们需要了解字符编码的基本概念和原理。 二、字符编码的基本概念 字符编码是将字符转换为二进制数据的过程。常见的字符编码有UTF-8、GBK、ISO-8859-1等。UTF-8是一种变长编码,它可以表示...

    Java的中文乱码及部分解决方法

    ### Java的中文乱码及部分解决方法 #### 引言 在Java开发过程中,中文乱码问题一直是开发者面临的一个挑战。这是因为Java内部采用Unicode编码,而操作系统、浏览器以及各种外部资源可能采用不同的编码格式(如GBK...

    java项目jsp中乱码问题解决

    总的来说,解决Java项目中的中文乱码问题需要理解编码与解码的基本原理,合理地设置字符编码,并在必要时进行手动转换。在开发过程中,应尽量保持统一的编码标准,避免在不同环节出现不一致导致的乱码问题。此外,...

    页面乱码解决4种方案

    根据给定的信息,本文将详细解释四种常见的网页乱码解决方案,并着重分析其原理与实践方法。这四个场景分别是:JSP页面显示乱码、表单提交中文时出现乱码、数据库连接出现乱码以及数据库显示乱码的问题。这些解决...

    JSP页面传参出现中文乱码的解决方案

    在开发Java Web应用程序时,尤其是使用JSP技术时,经常遇到的一个问题是中文字符在传递过程中出现乱码。这个问题主要是由于字符编码不一致导致的。...总之,理解和掌握字符编码原理,保持一致性是解决乱码问题的关键。

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

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

    Struts框架下Ajax发送中文乱码问题的解决

    在实际应用中,我们常常会遇到Ajax与服务器交互时出现中文乱码的问题,尤其是在发送和接收中文数据时。这个问题主要涉及到字符编码的处理,解决起来需要对HTTP协议、字符编码原理以及Struts框架的工作机制有一定的...

Global site tag (gtag.js) - Google Analytics