以下是 Java web应用的常见编码问题

1. html页面的编码

在web应用中,通常浏览器会根据http header: Content-type的值来决定用什么encoding, 比如遇到Content-Type: text/html; charset=UTF-8, 页面使用的就UTF-8编码. 但是考虑到离线的html(用户可能把页面html保存到本地), 打开离线的html的时候就要在meta指定编码,当然不指定也会有default值,那么不指定有时就可能出现乱码。

Meta标签

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

2. Http Request的编码

通常浏览在发送一个请求到服务器的时候,不会设置字符编码,在服务器端为了统一编码,可以在filter 中使用request.setCharacterEncoding("UTF-8")来设置编码. 一般浏览器都是用默认的ISO-8859-1字符编码,要解决中文参数乱码的时候都必须这一步。

3. http response的编码

http response中可以设置输出到浏览器的数据使用的编码方法是response.setCharacterEncoding("UTF-8")和response.setContentType("text/html; charset=UTF-8"), 如果只是单纯的设置编码,最好是用response.setCharacterEncoding("UTF-8"),因为response.setContentType("text/html; charset=UTF-8")是针对具体的MIME类型设置对应的字符编码。需要注意的是这里设置的编码对JSP页面不一定起作用,理由是JSP页面有自己设置字符编码的方式,而且优先级更高。

4 JSP页面的编码

有以下三种方式, 如果同时有第一种和第二种的时候只有一种会生效(如果不同的话),

还有第一种和第二种会覆盖第三种

最后要注意的是在使用1)或2)声明编码类型时,如果页面中include了其他JSP, 对于<%@ include file="BB.jsp" %>和<jsp:include page="BB.jsp"/>的区别, 假设在AA.jsp中使用前一种方式includeBB.jsp,那么BB.jsp中就不能有重复的编码的声明,效果是AA.jsp和BB.jsp都使用AA.jsp中声明的编码方式进行编码。

如果是使用后一种include的方式的话,AA.jsp和BB.jsp中都可以有各自编码的声明。

1) <%@ page contentType="text/html;charset=UTF-8"%>

2) <%@ page pageEncoding ="charset=UTF-8"%>

3) 在web.xml中添加以下设置

<jsp-config>

<jsp-property-group>
        <url-pattern>*.jsp</url-pattern>

<page-encoding>UTF-8</page-encoding>
    </jsp-property-group>

</jsp-config>

5. web.xml和weblogic.xml中的mime的设置

在web.xml中可以指定mime映射,同时也可以指定对应类型使用的字符编码 (这里的设置也可以使用3中所说的http response.setContentType和response.setCharacterEncoding来做到),比如:

<mime-mapping>

<extension>html</extension>

<mime-type>text/html; charset=UTF-8</mime-type>

</mime-mapping>

在weblogic.xml中可以设置默认的mime类型和字符编码

<container-discriptor>

<default-mime-type>text/html; charset=UTF-8</default-mime-type>

</container-discriptor>

还有

<charset-params>

<input-charset>

<resource-path>/*</resource-path>

<java-charset-name>UTF-8</java-charset-name>

</input-charset>

</charset-params>

总的来说,一个应用中html, http request, http response 和jsp pages中最好显示地指定相同的字符编码,最方便的就是都设为UTF-8,所有字符都不会出错。对于mime mapping的设置最好是在web.xml中设置。weblogic中的关于字符编码的设置一般不用设置(如果你把前面所说的都设置正确以后)。

转载于:https://www.cnblogs.com/may-25/p/4871619.html

[转载]Java web应用中的常见字符编码问题的解决方法相关推荐

  1. 对讲机使用过程中的常见故障及排除故障的解决方法

    对讲机使用过程中的常见故障及排除故障的解决方法 问题一:对讲机打开开关后,对讲机不工作并无任何反应. 故障分析:电池组电量耗尽.电池组未正确安装.主板损坏. 解决办法:将电池取下,重新安装一次或将电池 ...

  2. web服务器没有对应站点,原因:您的请求在Web服务器中没有找到对应的站点的解决方法...

    宝塔主机面板网站提示您的请求在Web服务器中没有找到对应的站点的解决方法的原因分析及解决方法,环境吧分享BT宝塔面板没有找到站点的原因及解决方法: 宝塔面板报错提示:没有找到站点 宝塔面板没有找到站点 ...

  3. eclipse java web乱码_JAVA and JAVA WEB with TOMCAT and ECLIPSE 学习过程中遇到的字符乱码问题及解决方法汇总(随时补充)...

    JAVA语言具有跨平台,unicode字符集编码的特点. 但是在开发过程中处理数据时涉及到的字符编码问题零零散散,尤其是处理中文字符时一不留神就可能出现一堆奇奇怪怪的符号,俗称乱码. 对于乱码,究其原 ...

  4. java日文_Java中的日文字符编码

    这是我的问题.我现在正在使用 Java Apache POI来读取Excel(.xls或.xlsx)文件,并显示内容.电子表格中有一些日语字符,我得到的所有日语字符都是"???"在 ...

  5. Java web应用引用外部jar包 运行时报ClassNotFoundException 解决方法

    最近做了个封装接口SDK的项目,在做模拟程序调用SDK的jar时,运行时出现了ClassNotFoundException. 由于是多个组件的项目,我只在运用调用jar包代码的组件中引用jar包,试过 ...

  6. JSP中获取HTML中的中文内容是乱码的解决方法---开发中遇到的问题

    1.转换字符编码方式 在JSP中,<%=request.getParameter("username")%>应改为: <%=new String(request. ...

  7. java web开发中Filter使用Annotation配置 (转载)

    为什么80%的码农都做不了架构师?>>>    为了在java中得到request和response对象,搜索到了 <如何在Java的普通类中获取Session以及reques ...

  8. Java如何控制用户输入的长度,用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!!...

    用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!! | create a new class FixLengthDocument extends Pla ...

  9. Java Web开发中,自定义过滤器被执行两次的原因分析及解决办法

    本文出处:http://blog.csdn.net/chaijunkun/article/details/7646338,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

最新文章

  1. 【camera】1. 相机硬件组成
  2. 演讲实录丨周斌:人工智能推动新基建和数据中心的技术革新
  3. 数组实现栈,实现push,pop,size方法 -- 面试算法
  4. 1.3 字符编码介绍
  5. PHP如何复制前端传递的json数据
  6. [算法笔记] 爬楼梯
  7. Symfony1.4.11学习笔记(四):数据模型
  8. python求高阶导数_TensorFlow:计算Hessian矩阵(和高阶导数)
  9. 今日之“烧饼油条”!
  10. 5月书讯 | 哺育小平邦彦、伊藤清等一代数学家的“数学圣经”终于来啦!
  11. prince2 成功的项目管理_清晖公开课受控环境下的项目管理PRINCE2认证培训(北京)...
  12. 推荐工具 HBuilder
  13. Riverbed连续第四年成为Gartner魔力象限领导者
  14. 闽江师范高等专科学校计算机系成立时间,闽江师范高等专科学校2018届毕业典礼...
  15. 什么 ? 陪玩都月入过忘拉~这不得python采集一下
  16. The supplied data appears to be in the Office 2007+ XML问题解决
  17. buddypress主题_如何在WordPress 3.0中启用BuddyPress
  18. 贝塞尔曲线移动 应用
  19. Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog
  20. php波峰,回流焊与波峰焊焊接的工艺流程

热门文章

  1. python文本筛选html_Python使用正则表达式去除(过滤)HTML标签提取文字功能
  2. linux检测文件名编码,Linux下查看文件编码,文件或文件名编码格式转换 | 缥缈的云...
  3. 99%网工都会遇到的10道经典面试问题
  4. 如何做好数字化体验管理,了解一下?
  5. CNCF 新增两个孵化项目 | 云原生生态周报 Vol. 58
  6. 格莱泽检验matlab,计量经济学实验指导书
  7. matlab用lism求零输入响应,信号与系统matlab课后作业_北京交通大学讲解.docx
  8. 编写五子棋程序时如何添加下棋时的音效_干货:如何提高编程能力
  9. java 组件 未显示出来_java – 自定义组件未显示
  10. 存储系统管理服务器,Mainframe的存储管理系统和架构