[转载]Java web应用中的常见字符编码问题的解决方法
以下是 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应用中的常见字符编码问题的解决方法相关推荐
- 对讲机使用过程中的常见故障及排除故障的解决方法
对讲机使用过程中的常见故障及排除故障的解决方法 问题一:对讲机打开开关后,对讲机不工作并无任何反应. 故障分析:电池组电量耗尽.电池组未正确安装.主板损坏. 解决办法:将电池取下,重新安装一次或将电池 ...
- web服务器没有对应站点,原因:您的请求在Web服务器中没有找到对应的站点的解决方法...
宝塔主机面板网站提示您的请求在Web服务器中没有找到对应的站点的解决方法的原因分析及解决方法,环境吧分享BT宝塔面板没有找到站点的原因及解决方法: 宝塔面板报错提示:没有找到站点 宝塔面板没有找到站点 ...
- eclipse java web乱码_JAVA and JAVA WEB with TOMCAT and ECLIPSE 学习过程中遇到的字符乱码问题及解决方法汇总(随时补充)...
JAVA语言具有跨平台,unicode字符集编码的特点. 但是在开发过程中处理数据时涉及到的字符编码问题零零散散,尤其是处理中文字符时一不留神就可能出现一堆奇奇怪怪的符号,俗称乱码. 对于乱码,究其原 ...
- java日文_Java中的日文字符编码
这是我的问题.我现在正在使用 Java Apache POI来读取Excel(.xls或.xlsx)文件,并显示内容.电子表格中有一些日语字符,我得到的所有日语字符都是"???"在 ...
- Java web应用引用外部jar包 运行时报ClassNotFoundException 解决方法
最近做了个封装接口SDK的项目,在做模拟程序调用SDK的jar时,运行时出现了ClassNotFoundException. 由于是多个组件的项目,我只在运用调用jar包代码的组件中引用jar包,试过 ...
- JSP中获取HTML中的中文内容是乱码的解决方法---开发中遇到的问题
1.转换字符编码方式 在JSP中,<%=request.getParameter("username")%>应改为: <%=new String(request. ...
- java web开发中Filter使用Annotation配置 (转载)
为什么80%的码农都做不了架构师?>>> 为了在java中得到request和response对象,搜索到了 <如何在Java的普通类中获取Session以及reques ...
- Java如何控制用户输入的长度,用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!!...
用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!! | create a new class FixLengthDocument extends Pla ...
- Java Web开发中,自定义过滤器被执行两次的原因分析及解决办法
本文出处:http://blog.csdn.net/chaijunkun/article/details/7646338,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...
最新文章
- 【camera】1. 相机硬件组成
- 演讲实录丨周斌:人工智能推动新基建和数据中心的技术革新
- 数组实现栈,实现push,pop,size方法 -- 面试算法
- 1.3 字符编码介绍
- PHP如何复制前端传递的json数据
- [算法笔记] 爬楼梯
- Symfony1.4.11学习笔记(四):数据模型
- python求高阶导数_TensorFlow:计算Hessian矩阵(和高阶导数)
- 今日之“烧饼油条”!
- 5月书讯 | 哺育小平邦彦、伊藤清等一代数学家的“数学圣经”终于来啦!
- prince2 成功的项目管理_清晖公开课受控环境下的项目管理PRINCE2认证培训(北京)...
- 推荐工具 HBuilder
- Riverbed连续第四年成为Gartner魔力象限领导者
- 闽江师范高等专科学校计算机系成立时间,闽江师范高等专科学校2018届毕业典礼...
- 什么 ? 陪玩都月入过忘拉~这不得python采集一下
- The supplied data appears to be in the Office 2007+ XML问题解决
- buddypress主题_如何在WordPress 3.0中启用BuddyPress
- 贝塞尔曲线移动 应用
- Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog
- php波峰,回流焊与波峰焊焊接的工艺流程
热门文章
- python文本筛选html_Python使用正则表达式去除(过滤)HTML标签提取文字功能
- linux检测文件名编码,Linux下查看文件编码,文件或文件名编码格式转换 | 缥缈的云...
- 99%网工都会遇到的10道经典面试问题
- 如何做好数字化体验管理,了解一下?
- CNCF 新增两个孵化项目 | 云原生生态周报 Vol. 58
- 格莱泽检验matlab,计量经济学实验指导书
- matlab用lism求零输入响应,信号与系统matlab课后作业_北京交通大学讲解.docx
- 编写五子棋程序时如何添加下棋时的音效_干货:如何提高编程能力
- java 组件 未显示出来_java – 自定义组件未显示
- 存储系统管理服务器,Mainframe的存储管理系统和架构