在开发中,我们经常遇到中文乱码的问题,比方:

&浏览器中看到的 Jsp/Servlet 页面中的汉字成了 ’?’ ?   

&浏览器中看到的 Servlet 页面中的汉字都成了乱码    

&Jsp/Servlet 页面无法显示 GBK 汉字。

&Jsp/Servlet 不能接收 form 提交的汉字。

&JSP/Servlet 数据库读写无法获得正确的内容。

隐藏在这些问题后面的是各种错误的字符转换和处理。解决类似的字符encoding问题,须要了解 Jsp/Servlet 的执行过程,检查可能出现故障的各个点。以下是一些自己运用中的一些分享:

1.在jsp中假设指定了<%@ page contentType="text/html; charset=A"%>,那么在该jsp中全部构造的String(不是引用),假设沒有指定编码,那么这些String的编码是A的;从request得到的String假设沒有指定request的编码的话,他是iso-8859-1的;从别的地方得到的String是使用原來初始的编码的,比方从数据库得到String,假设数据库的编码是B,那么该String的编码是B而不是A的,也不是系统默认的。此时,假设要输出的String的编码不是A,那么,非常可能显示乱码的,所以首先要将String正確转化为编码A的String,然后输出。

2. 假设在jsp中沒有指定<%@ page contentType="text/html; charset=A"%>,那么相当于指定了<%@pagecontentType="text/html; charset=ISO-8859-1" %>。

3. Servlet中假设运行了语句:response.setContentType("text/html;charset=A");説明将response的字符输出流编码设置为A,全部要输出的String的编码要转化为A,否則会得到乱码。Servlet中从request得到的String的编码和jsp中一样的,可是在servlet java文件里构造的String是使用的系统默认的编码的。在servelt中从外部得到的String是使用原来的编码的,比方从编码为B的数据库得到的数据是编码为B的,不是A,也不是系统默认的编码。

综上所属,要解决我们常见的中文乱码问题,须要理解数据交互中Jsp, Servlet, 数据库中数据的编码定义,统一编码格式或做适当转换。

最新文章

  1. 浏览器全屏事件(Html5)
  2. Unity学习疑问记录之坐标体系
  3. python 获取网页图片
  4. KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]
  5. Red KV数据 庫设計模式
  6. openDatabase() chrome vivaldi Stylish
  7. CSS 3 颜色表示法
  8. 使用公司自己的maven服务器时,本地 maven 的配置方法
  9. [置顶] Objective-C ,ios,iphone开发基础:protocol 协议(委托,代理)的声明
  10. 3.如何安装Apache Spark
  11. poj2362
  12. 判断当前viewcontroller是push还是present的方式显示的
  13. MTK LCM的添加
  14. 在 vmware player中安装 ubuntu 17.10
  15. chrome中Timeline的使用(译)
  16. vmware备份
  17. Linux基础命令---dump
  18. dubbo 配置属性
  19. 负载均衡中使用 Redis 实现共享 Session
  20. jmeter监控服务器的方法

热门文章

  1. FFmpeg介绍及参数详细说明
  2. 开源Jabber(XMPP) IM服务器介绍
  3. Linux如何统计进程的CPU利用率
  4. 2014年acm亚洲区域赛&#183;鞍山站
  5. C#中嵌入互操作类型的含义
  6. Hadoop中的InputFormat解析
  7. Bigger is Better
  8. codeforces 690C3 Brain Network
  9. BLOCK 死循环
  10. 《Python 学习手册4th》 第十七章 作用域