在开发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中文乱码问题
一般说来在每个页面的开始处,加入:
以下是引用片段: <%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %>
|
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里加入如下几行:
以下是引用片段: <filter> <filter-name>SetCharacterEncoding</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>SetCharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
|
3)完成.
2 get方式的解决办法
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:
以下是引用片段: <Connector port="80"maxThreads="150"minSpareThreads="25"maxSpareThreads="75" enableLookups="false"redirectPort="8443"acceptCount="100" debug="0"connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
|
<CONNECTOR< p> 2)重启tomcat,一切OK。
3、xmlHttpRequest中文问题
页面jsp用的GBK编码
以下是引用片段: 代码 <%@pagecontentType="text/html;charset=GBK"%> javascript部分 代码 functionaddFracasReport(){ varurl="controler?actionId=0_06_03_01&actionFlag=0010"; varurlmsg="&reportId="+fracasReport1.textReportId.value;//故障报告表编号 varxmlHttp=Common.createXMLHttpRequest(); xmlHttp.onreadystatechange=Common.getReadyStateHandler(xmlHttp,eval("turnAnalyPage")); xmlHttp.open("POST",url,true); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded); xmlHttp.send(urlmsg); }
|
后台java中获得的reportId是乱码,不知道该怎么转,主要是不知道xmlHttp.send(urlmsg);以后是什么编码?在后面用java来转,试了几种,都没有成功,其中有:
以下是引用片段: 代码 publicstaticStringUTF_8ToGBK(Stringstr){ try{ returnnewString(str.getBytes("UTF-8"),"GBK"); }catch(Exceptionex){ returnnull; } } publicstaticStringUTF8ToGBK(Stringstr){ try{ returnnewString(str.getBytes("UTF-16BE"),"GBK"); }catch(Exceptionex){ returnnull; } } publicstaticStringGBK(Stringstr){ try{ returnnewString(str.getBytes("GBK"),"GBK"); }catch(Exceptionex){ returnnull; } } publicstaticStringgetStr(Stringstr){ try{ Stringtemp_p=str; Stringtemp=newString(temp_p.getBytes("ISO8859_1"),"GBK"); temp=sqlStrchop(temp); returntemp; }catch(Exceptione){ returnnull; } }
|
分享到:
相关推荐
其可移植性和安全性使得Java成为处理嵌入式硬件开发中数据处理和通信的理想选择。Java虚拟机(JVM)能够在各种硬件平台上运行,减少了对特定硬件的依赖。 2. **EB-MAST开发基础** EB-MAST的开发涉及主板布局设计、...
EB tresos Studio 模块开发插件开发与 EB 配置界面开发 EB tresos Studio 是一个功能强大且灵活的开发工具,用于开发和配置 automotive 电子控制单元(ECU)软件。该工具提供了一个集成的开发环境,允许开发者快速...
接收机EB500是一款高性能的无线电接收设备,其开发文档是工程师进行驱动程序开发和理解SCPI(Standard Command for Programmable Instruments)指令的关键资源。SCPI是一种国际标准的编程语言,广泛应用于各类测量...
总结来说,“EB8000常用图库”是一个实用的工具,它为威伦屏EB8000的使用者提供了丰富的图形元素,覆盖了从基本操作到复杂系统的各种需求。通过合理利用这些图库,可以大大提高HMI界面的设计质量和开发速度,从而...
通常,这需要编写用户自定义材料子程序(UMAT),以处理复杂的本构关系。 在"EB.zip_ABAQUS_abaqus邓肯张eb_eb子程序_邓肯EB_邓肯张EB"这个压缩包中,包含了一个名为"EB.for"的FORTRAN源代码文件,这就是用于实现...
"cmp.rar_EB8000_EB8000触摸屏_eb8000proje_eb8000软件实例"这个压缩包文件,包含了一个基于EB8000 Project Manager开发的触摸屏应用示例,对于学习和掌握EB8000触摸屏的编程与应用具有重要的参考价值。 EB8000触摸...
《Intel 80C186EB_80C188EB微处理器用户手册》是针对Intel X86系列嵌入式处理器的权威指南,它涵盖了这些处理器的全面技术细节,为软硬件开发提供了宝贵的参考资料。80C186EB和80C188EB是Intel在1980年代末推出的高...
在EB Pro中,你需要使用其内置的转换功能来处理.xob文件。通常在“文件”菜单中选择“打开”或“导入”,找到并加载刚刚生成的.xob文件。EB Pro软件会识别这个.xob文件并进行反编译,将其转化为EB PRO能够理解的格式...
TC397 EB MCAL开发从0开始系列 之 8.0 CAN配置实战 - CAN模块配置
综上所述,【威纶通EB8000图库】是EB8000触摸屏设计的重要辅助工具,它通过丰富的图形资源简化了界面设计,提高了项目的开发效率,同时保证了最终产品的专业性和用户体验。对于从事自动化工程、设备控制等相关领域的...
2. **开源代码**:EB163 MapEditor的源代码完全开放,这意味着开发者可以查看、学习并修改其内部逻辑,根据自己的需求进行定制化开发,极大地扩展了编辑器的功能性和适应性。 3. **高效编辑**:编辑器提供了丰富的...
### SmartRF04EB开发套件详析:深入探索CC1110/CC2430/CC2510无线技术 #### 概述与手册内容 **SmartRF04EB.pdf**文档提供了对SmartRF04EB开发套件的全面介绍,该套件是基于Chipcon SmartRF04平台的高级开发工具,...
本节将深入探讨"EB FORM开发基础知识",结合提供的文档"Oracle Forms开发基础知识.doc",我们将详述FORM开发的核心概念、步骤以及基础知识。 1. **FORMS介绍** Oracle Forms是一种可视化开发环境,用于创建交互式...
smartRF04EB是德州仪器(TI)推出的一款无线射频(RF)开发工具,主要用于开发和测试低功耗无线通信技术,如蓝牙低功耗(BLE)、Zigbee或Thread等。在进行这些无线通信协议的硬件设计和软件开发时,这样的开发板非常实用。...
1. **EB8000软件介绍**:首先,教程会介绍EB8000的基本概念,包括它的开发背景、主要功能以及在工业自动化中的应用领域。这将帮助读者理解软件的重要性及其在实际工作中的价值。 2. **安装与配置**:详细讲解如何...
综上所述,这份简历展示了一位具有3年经验的EB前端开发工程师,他拥有全面的技术栈,包括前端基础、框架应用、工程化工具、后端接口处理以及移动端开发。他的项目经验表明他能够灵活应对不同类型的项目需求,是前端...
"前端开发简历模板-eb前端开发-3年-上海.docx" 本资源是关于一名具有三年前端开发经验的简历模板,主要描述了该开发者的个人信息、工作经验、项目经验、技术栈等信息。 个人信息 * 姓氏:(隐私保护) * 性别:男...
在【标题】和【描述】中,我们看到的是一份针对前端开发者,特别是专注于EB前端开发,拥有3年工作经验,并且位于杭州的个人简历。这份简历展示了求职者在Web前端开发领域的专业技能和项目经验。 【核心知识点】 1....
在2.3版本中,可能包含了一些更新和改进,如增强的处理能力、新增的信道模型或更友好的用户界面。 操作手册通常会分为几个部分,包括: 1. **产品概述**:这部分会介绍EB-C8信道仿真仪的基本功能、设计目标和适用...