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

一、Java中文问题的由来

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

首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成

class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写

中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding

gb2312编译;对于JSP,在文件头加上或基本上就能解决这类乱码问题。

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

从页面form提交数据到java程序 byte->char

从java程序到页面显示 char?>byte

从数据库到java程序 byte?>char

从java程序到数据库 char?>byte

从文件到java程序 byte->char

从java程序到文件 char->byte

从流到java程序 byte->char

从java程序到流 char->byte

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

二、解决方法

前面已经提到了Java程序与其他媒介交互时字符和字节的转换过程,如果这些转换过程中容易产生乱码。解决这些乱码问题的关键在于确保转换时使用的编码方式与字节原有的编码方式保持一致,下面分别论述(Java或JSP自身产生的乱码请参看第一部分)。

1、JSP与页面参数之间的乱码

JSP获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。解决这类乱码问

题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方

式:request.setCharacterEncoding("GBK")或

request.setCharacterEncoding("gb2312")。

如果在JSP将变量输出到页面时出现了乱码,可以通过设置

respons

java jsp 乱码_JAVA/JSP 中文乱码相关推荐

  1. java exception 乱码_java 常见中文乱码问题解决

    关于中文乱码: 一. 1).在jsp页面上输入中文,要保证中文不乱码,有三个前提: 保证contentType="text/html:charset=UTF-8",pageEnco ...

  2. java button中文乱码_java解决中文乱码的几种写法

    工作中总会遇到中文乱码问题,以导出文件,文件名称是中文的话,下载下来的文件名称会乱码问题,总结了几种解决文件名乱码的写法,仅供参考. 首先定义一个汉语字符串 String zhName = " ...

  3. java mysql 乱码_java+mysql中文乱码解决

    MySQL默认使用 ISO-8859-1 ( 即Latin1 ) 字符集,而JAVA内部使用Unicode编码,因此在JAVA中向MYSQL数据库插入数据时,或者读取数据时,都需要先转换一下编码方式: ...

  4. jsp表单提交中文乱码的解决

    jsp表单提交中文乱码的解决 <%@ page language="java" contentType="text/html; charset=utf-8 &quo ...

  5. JSP导出excel时中文乱码的问题

    Web应用导出Excel报表的简单实现(HTML) 在Web应用中,很多数据经常要导出成Excel文档.用专门的生成真正的Excel文档的方式比较复杂,不太好用.所以经常用一种简单的方式来实现,即将报 ...

  6. JSP表单提交中文乱码解决方案

    JSP表单提交中文乱码解决方案 参考文章: (1)JSP表单提交中文乱码解决方案 (2)https://www.cnblogs.com/sincoolvip/p/5746678.html (3)htt ...

  7. eclipse中jsp和html文件中文乱码

    eclipse中jsp和html文件中文乱码 首先设置项目的编码,右键项目–>properties–>resource里边的text file encoding设置为utf-8,然后jsp ...

  8. java中文乱码 例子_JSP中文乱码常见3个例子及其解决方法

    常见3个例子及其解决方法如下 实例一.jsp页面显示时 中文乱码--jsp页面显示时 木兰辞拟古决绝词柬友 人生若只如初见,何事秋风悲画扇. 等闲变却故人心,却道故人心易变. 骊山语罢清宵半,泪雨霖铃 ...

  9. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别

    java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...

  10. linux加水印乱码,linux java程序加水印及中文乱码方案(二)

    上一篇介绍了在linux, centos图片加水印出现乱码的解决方案,<linux java程序加水印及中文乱码方案>, 在真实项目环境下,一是部署在虚拟机服务器,还有项目部署在docke ...

最新文章

  1. java 校验文件类型_java如何判断一个文件的类型 | 学步园
  2. 【网络安全】某安全网关前端JS分析
  3. 神策 2020 数据驱动用户大会报名开启
  4. 信号扫描_科研必备“武器”之扫描电子显微镜
  5. 《软件项目管理(第二版)》第 6 章——项目质量管理 重点部分总结
  6. linux pwm 调屏_Linux驱动学习之:PWM驱动
  7. jquery-练习-添加列表的一行信息
  8. 【Java】从键盘中输入一个值,在数组中查找该值的索引并输出
  9. Ext中Grid重新load设置URL
  10. asc超级计算机题目,通知公告|2019 ASC 世界大学生超级计算机竞赛(ASC19)报名通知|信息与软件工程学院...
  11. 计算机口语英语对话视频,出国常用英语口语对话视频
  12. 如何将java项目部署到linux环境(Tomcat)
  13. 咔嚓冲印: 用IPHONE冲印LOMO卡片和明信片
  14. windos 启动redis服务端与客户端
  15. 计算基因组外显子长度
  16. android ios 屏幕直播软件推荐,看个球:超全超给力的看球直播利器(iOS +安卓) | 闲一鱼博客...
  17. 游戏公司如何应对游戏黑产 ?
  18. int型整数的最小值和最大值是多少(精确值)
  19. MyBatis框架快速入门
  20. 给小朋友讲故事——谈谈牛顿,他是个科学家么?(音频)

热门文章

  1. Emoji表情代码大全
  2. 计算机操作系统|汤小丹|第四版|习题答案(六)
  3. CISSP重点知识总结1
  4. 单元测试,冒烟测试,SIT测试,UAT测试
  5. 吉安市推行“区块链+电子证照+无证办理”模式
  6. Golang代码测试:一点到面用测试驱动开发
  7. 基于jsp+mysql+Spring+SpringMVC+mybatis的房源信息管理系统
  8. 商品管理系统(可用于学生参考)
  9. IOS YYKit 源码解析
  10. 无法找到资源编辑器dll