一, 找出问题的根源
乱码可能出现的地方:

  1. jsp页面中
  2. jsp页面之间相互传参的参数
  3. 与数据库中数据的存取

基本归纳为以上几种.

二, 寻找解决方案

  1. 出现在jsp页面中,是由于没有设置jsp页面的中文字符编码.
  2. 出现在jsp页面之间相互传参,是由于参数没有设置正确的字符编码.
  3. 以上2个问题解决了,那么存到数据库中,自然就不存在乱码。除非你对存入到数据库里的数据再次进行编码.

三, 解决方法

  1的解决方法:

 <% @ page contentType = " text/html;charset=gb2312 " %>

  加上这句解决jsp页面中的中文乱码显示,tomcat编译完后向客户端输出的html文件不是采用中文编码,所以会导致乱码产生。

  2的解决方法:

    2.1

 <% request.setCharacterEncoding("gb2312"); %>

    加上这句解决jsp页面中的中文参数传递乱码。因为浏览器默认使用的编码是“UTF-8”发送请求参数。我们把它改为"gb2312"就ok了。

    2.2

 String(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");

    这句的意思是,把传来的参数全部编码转换成gb2312,这样做的缺点是每次传来一个参数都要这样写,很麻烦.

    同样可通过设置server.xml配置文件来实现:      

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

    但是这样就应用到整个webapp中去了.

    另,

 <% @page pageEncoding = "gb2312" %> 

    此句是为了让jsp编译器能正确地解码含有中文字符的jsp页面.

  其它方法还可以修改web.xml文件,配置一个过滤器。其原理都一样,只是换种方式而已。有的书上专门写了一个函数来解决乱码,实际上对比一下就知道那种解决方法的好与坏。回过头来一看,解决乱码也不过如此.ok,实际就加上这3句搞定问题:

 <% @page pageEncoding = "gb2312" %>
<% @ page contentType = "text/html;charset=gb2312" %>
<% request.setCharacterEncoding("gb2312"); %>

  今天在部署一个webservices程序的时候,从页面获取数据的servlet出现了乱码问题,在servlet中我已经把request.setCharacterEncoding("GB2312");这段文字加入到代码中去,但是还是出现乱麻问题。到网上找资料,如下:JAVA是Unicode编码,你先转换成ISO8859-1,然后再转换成GBK或是GB2312.

  ref:http://blog.csdn.net/csh624366188/article/details/6657350

  

jsp中文乱码终极解决方法(转)的更多相关文章

  1. jsp中文乱码终极解决方法

    转载http://blog.csdn.net/csh624366188/article/details/6657350 一 找出问题的根源    乱码可能出现的地方:1 jsp页面中          ...

  2. ueditor 1.4.3 gbk asp 上传中文乱码 终极解决方法 ie6 ie8 也适用

    [摘要:百度编纂器1.43 gbk asp 题目 1.firefox3.0下 单图上传 面没有了 面多图上传 中央的蓝色按钮(即 面击挑选图片)没有表现(附件上传出那个题目) 没有晓得我的水狐吃翔了 ...

  3. php 使用phpmailer 发送邮件(附带中文乱码的解决方法)

    下载phpmailer ,在程序里包含class.phpmailer.php 类  ,这里有中文乱码的解决方法 实例代码如下 <html> <head> <title&g ...

  4. xShell终端中文乱码完全解决方法

    xShell终端中文乱码完全解决方法 xShell(xShell5)以及其他终端中文乱码的原因无非有三种:(1)Linux系统的编码问题:(2)xShell终端的编码问题: (3)两端的语言编码不一致 ...

  5. MyEclipse和tomcat结合编写jsp对于中文乱码的解决方法

    一.Java和jsp 中文乱码原因和解决方法: Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦.原因有两方面: 第一方面:J ...

  6. Mysql命令行中文乱码的解决方法

    环境:Windows 8 64位,Mysql  5.0.96 for Win64 (x86) 数据库本身安装时默认已经是使用utf8编码的了,但在命令行中执行查询时,查询到的中文依然乱码,解决方法如下 ...

  7. 30. CentOS终端命令行显示中文乱码的解决方法

    安装CentOS的时候选择了中文,结果在终端不能显示中文,都是乱码,解决方法:修改/etc/sysconfig/i18n,内容为   代码如下: LANG="zh_CN.GB18030&qu ...

  8. windows下SVN日志反馈中文乱码的解决方法

    转自:https://shiyousan.com/post/635889908703806636 TortoiseSVN中文乱码的问题困扰了我好久,特别是每次使用“以标准差异文件显示修改”时,打开的文 ...

  9. 【IntelliJ IDEA】从资源文件读取出来就中文乱码的解决方法

    在application.properties资源文件中设置两个自定义的属性以及属性值: com.sxd.name = "德玛西亚" com.sxd.want = "王者 ...

随机推荐

  1. MFC 如何改变对话框按钮上的文字

    原文地址:http://blog.163.com/wenxianliang08@126/blog/static/8358326320110300643282/ 什么是标记菜单  如何标记菜单   如何 ...

  2. Java native(转)

    Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能. 可以将 ...

  3. Maven实战五

    转载:http://www.iteye.com/topic/1123232 我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置    依赖可以声明 ...

  4. 怒刷BZOJ记录(一)1001~1037

    我实在是太弱了...不滚粗只能刷BZOJ了...这里来记录每天刷了什么题吧. 2015-7-9 : 1001[BeiJing2006]狼抓兔子                 | 最大流练习(呃..其 ...

  5. App自动更新之通知栏下载

    见证过博客园的多次升级,你也希望你的软件通过更新发布新特性通知用户吧,是的.这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 1.设计思路,使用Versio ...

  6. 重载(Overloading)以及模板(Template)

    继续<C++ premier plus>的学习 (1)函数重载,通俗来说,就是相同的函数名字名下,存在多个函数,要使得这成立,各个同名函数必须形参列表(也称为"签名", ...

  7. 《University Calculus》-chaper13-多重积分-三重积分的引入

    承接之前对一重积分和二重积分的介绍,这里我们自然的引出三重积分. 在二重积分的引入中,我们曾经埋下过一个小伏笔,二重积分的几何意义是求解一个体积,但是我们仅仅限定在了曲顶柱体的几何体,那么对于完全由曲 ...

  8. 《A First Course in Probability》-chaper3-条件概率和独立性-贝叶斯公式、全概率公式

    设有事件A.B. 下面结合具体的题目进一步理解这种方法: Q1:保险公司认为人可以分为两类,一类易出事故,另一类则不易出事故.统计表明,一个易出事故者在一年内发生事故的概率是0.4,而对不易出事故者来 ...

  9. HDU 4751 Divide Groups 2013 ACM/ICPC Asia Regional Nanjing Online

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 题目大意:判断一堆人能否分成两组,组内人都互相认识. 解题思路:如果两个人不是相互认识,该两人之 ...

  10. VC++ 动态检测串口的热插拔(一)通过注册表实现

    在上一篇文章中讲述了如何通过循环遍历的方法获取可用串口,可是这样的方法过于暴力,难免会想有没有其他的办法那,嘿嘿,那是肯定会有的,不管什么问题,解决问题的方法永远都不止一种.下面讲述如何通过注册表来获 ...