EB开发乱码处理总结
在开发J2EE系统是,经常遇到jsp,数据库出现乱码问题,其解决方法分如下四个步骤:
1 首先检查jsp页面最上面的pageEncoding,将其设置为:GBK
<%@ page language="java" pageEncoding="GBK"%>
<%@ page contentType="text/html;charset=GBK"%>
2 我们开发工具用eclipse,检查ecpilpse的默认字体格式,方法是:
Project->Properties->Info 查看Text file encoding是否为GBK ,如果不是将其设置为GBK
3 给工程新建一个包,包名为filters,编写一个类SetCharacterEncodingFilter,次类在包filters里面
SetCharacterEncodingFilter实现Filter接口 ,该类的代码如下:
package filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null ;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
public void destroy() {
// TODO Auto-generated method stub
this.encoding = null ;
this.filterConfig = null ;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
// Pass control on to the next filter
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
4 配置web.xml ,具体web.xml文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_2.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>EncodingServlet</servlet-name>
<servlet-class>EncodingServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>EncodingServlet</servlet-name>
<url-pattern>/servlet/EncodingServlet</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
对于Java由于默认的编码方式是 UNICODE,所以用中文也易出问题,常见的解决是
String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);
1、utf8解决JSP中文乱码问题
一般说来在每个页面的开始处,加入:
以下是引用片段: |
charset=UTF-8 的作用是指定JSP向客户端输出的编码方式为“UTF-8”
pageEncoding="UTF-8" 为了让JSP引擎能正确地解码含有中文字符的JSP页面,这在LINUX中很有效
request.setCharacterEncoding("UTF-8"); 是对请求进行了中文编码
有时,这样仍不能解决问题,还需要这样处理一下:
String msg = request.getParameter("message");
String str=new String(msg.getBytes("ISO-8859-1"),"UTF-8");
out.println(st);
2、Tomcat 5.5 中文乱码
1)只要把%TOMCAT安装目录%/ webapps/servlets-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。
2)在你的web.xml里加入如下几行:
以下是引用片段: |
3)完成.
2 get方式的解决办法
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:
以下是引用片段: |
<CONNECTOR< p> 2)重启tomcat,一切OK。
3、xmlHttpRequest中文问题
页面jsp用的GBK编码
以下是引用片段: |
后台java中获得的reportId是乱码,不知道该怎么转,主要是不知道xmlHttp.send(urlmsg);以后是什么编码?在后面用java来转,试了几种,都没有成功,其中有:
以下是引用片段: |
EB开发乱码处理总结相关推荐
- 飞桨助力智能车竞赛升级,免费赠送EB开发板!
第十六届智能汽车竞赛-百度人工智能创意赛道已经开启! 比赛虽好,但同学们苦核心开发硬件久矣! 百度飞桨作为大赛的赞助商之一,为了更好的支持参加「百度人工智能创意赛道」的同学们.百度飞桨与鲸鱼机器人将为 ...
- Java Web开发乱码问题
最基本的乱码问题 这个乱码问题是最简单的乱码问题.一般新会出现.就是页面编码不一致导致的乱码. Html代码: <%@ page language="java" pageEn ...
- java开发乱码解决
1.jsp页面内容显示乱码 这种乱码原因很简单,一般的工具或解码程序对中文字符解析时采用默认的解码方式: <%@ page contentType="text/html; charse ...
- 微信网页开发乱码解决
微信端网页数据传输出现乱码,但是dao和service层都是和电脑网页同样的,即便是别人已经写好的项目放在我这边运行也会出现乱码. 好吧,问题就出在tomcat上,在server.xml里的以下代码 ...
- URL编码以及GET和POST提交乱码解决方案
2019独角兽企业重金招聘Python工程师标准>>> 1. 什么是URL编码. URL编码是一种浏览器用来打包表单输入的格式,浏览器从表单中获取所有的name和其对应的value ...
- python php 通信,Python和php通信乱码问题解决方法
Python和php通信乱码问题解决方法 发布于 2014-07-29 22:28:21 | 118 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertex ...
- Java Web乱码分析及解决方案
1. 什么是URL编码. URL编码是一种浏览器用来打包表单输入的格式,浏览器从表单中获取所有的name和其对应的value,将他们以name/value编码方式作为URL的一部分或者分离的发送到服 ...
- golang之网络开发
TCP Server/Client开发 net包提供network I/O开发接口,包括TCP/IP.UDP.DNS和Unix domain sockets. 常用开发一般仅需要最基础接口或函数: 服 ...
- 以赛促学,飞桨助力大学生智能车竞赛升级
第十六届智能汽车竞赛-百度人工智能创意赛道已经开启! 比赛虽好,但同学们苦核心开发硬件久矣! 百度飞桨作为大赛的赞助商之一,为了更好的支持参加「百度人工智能创意赛道」的同学们.百度飞桨与鲸 ...
- python有哪些方向、应该怎么学-终于找到深圳学Python,有几个方向?怎么从一个方向学到底...
深圳学Python,有几个方向?怎么从一个方向学到底,近日很多临近毕业的大学生朋友来邮件询问关于深圳Python培训的一些事情,觉得很有代表性,所以就想探讨一下:为什么要选择深圳Python培训?经过 ...
最新文章
- 资源2010-01-29
- Android应用程序组件Content Provider的共享数据更新通知机制分析(3)
- android原理揭秘系列之VacantCell缓存
- 【opencv】2.opencv绘图、视频等
- PHP中抽象类与接口的应用场景
- 动态ip如何做域名解析?
- 华为手机设置页面黑色_华为手机设置里面的这些功能你都知道吗?
- 从入门到狂热,特征工程必学的几项资源
- 在RobotFramework--RIDE中把日期转化为整型进行运算
- Atitit 理解参数 目录 1. 参数	1 1.1. 意义	1 1.2. 形式参数 实际参数	1 1.3. 默认参数 vs 必须参数	2 1.4. 位置参数,那么这个命名关键字参数	2 1.5. I
- 全球及中国紧急警报系统EAS行业竞争格局及市场前景预测分析报告2022-2028年
- 2022(春)软工作业2:个人编程练习
- 第12章 Spring AOP之扩展篇
- 学会这几项windows操作,轻松玩转自己的个人电脑
- excel 分组排序,取前5
- 网站安全公司waf防火墙的作用分析
- 电大2020春计算机形考作业,成教作业网提供国开电大2020年 建筑构造 形考任务1-4答案...
- 测试用例-——教室和椅子
- 豆瓣再美好,也只是生活中的一瓣
- java实现环形链表解决约瑟夫环问题
热门文章
- 编程语言的动态性(Dart和OC对比)
- Jzoj3780 Magical GCD
- 获取git的当前分支名称
- twrp gui/actions.cpp 中的功能实现 tw_action ,tw_action_param ,第二章
- Lowest Common Multiple Plus
- html中给select下拉框赋值
- python生成动态链接二维码
- python函数可以返回多个函数值吗_python - 函数返回多个值是pythonic吗?
- get请求中传json参数报400的错误_react的数据请求
- Layui 中引入Echarts模块