`
44424742
  • 浏览: 232503 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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”);

  1utf8解决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);

  2Tomcat 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) 打开tomcatserver.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

  3xmlHttpRequest中文问题

  页面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;
  }
  }

分享到:
评论

相关推荐

    硬件开发eb-mast开发笔记

    其可移植性和安全性使得Java成为处理嵌入式硬件开发中数据处理和通信的理想选择。Java虚拟机(JVM)能够在各种硬件平台上运行,减少了对特定硬件的依赖。 2. **EB-MAST开发基础** EB-MAST的开发涉及主板布局设计、...

    MCAL模块plugin开发,EB配置界面开发

    EB tresos Studio 模块开发插件开发与 EB 配置界面开发 EB tresos Studio 是一个功能强大且灵活的开发工具,用于开发和配置 automotive 电子控制单元(ECU)软件。该工具提供了一个集成的开发环境,允许开发者快速...

    EB500_Manual_SCPI_EB500开发文档_

    接收机EB500是一款高性能的无线电接收设备,其开发文档是工程师进行驱动程序开发和理解SCPI(Standard Command for Programmable Instruments)指令的关键资源。SCPI是一种国际标准的编程语言,广泛应用于各类测量...

    EB8000常用图库

    总结来说,“EB8000常用图库”是一个实用的工具,它为威伦屏EB8000的使用者提供了丰富的图形元素,覆盖了从基本操作到复杂系统的各种需求。通过合理利用这些图库,可以大大提高HMI界面的设计质量和开发速度,从而...

    EB.zip_ABAQUS_abaqus邓肯张eb_eb子程序_邓肯EB_邓肯张EB

    通常,这需要编写用户自定义材料子程序(UMAT),以处理复杂的本构关系。 在"EB.zip_ABAQUS_abaqus邓肯张eb_eb子程序_邓肯EB_邓肯张EB"这个压缩包中,包含了一个名为"EB.for"的FORTRAN源代码文件,这就是用于实现...

    cmp.rar_EB8000_EB8000触摸屏_eb8000proje_eb8000软件实例_site:www.pudn.co

    "cmp.rar_EB8000_EB8000触摸屏_eb8000proje_eb8000软件实例"这个压缩包文件,包含了一个基于EB8000 Project Manager开发的触摸屏应用示例,对于学习和掌握EB8000触摸屏的编程与应用具有重要的参考价值。 EB8000触摸...

    Intel 80C186EB_80C188EB Microprocessor User’s Manual

    《Intel 80C186EB_80C188EB微处理器用户手册》是针对Intel X86系列嵌入式处理器的权威指南,它涵盖了这些处理器的全面技术细节,为软硬件开发提供了宝贵的参考资料。80C186EB和80C188EB是Intel在1980年代末推出的高...

    威纶通触摸屏EB8000编写的程序如何转换到EB PRO中?.docx

    在EB Pro中,你需要使用其内置的转换功能来处理.xob文件。通常在“文件”菜单中选择“打开”或“导入”,找到并加载刚刚生成的.xob文件。EB Pro软件会识别这个.xob文件并进行反编译,将其转化为EB PRO能够理解的格式...

    TC397 EB MCAL开发从0开始系列 之 8.0 CAN配置实战 - CAN模块配置

    TC397 EB MCAL开发从0开始系列 之 8.0 CAN配置实战 - CAN模块配置

    威纶通EB8000图库

    综上所述,【威纶通EB8000图库】是EB8000触摸屏设计的重要辅助工具,它通过丰富的图形资源简化了界面设计,提高了项目的开发效率,同时保证了最终产品的专业性和用户体验。对于从事自动化工程、设备控制等相关领域的...

    Eb163MapEditor

    2. **开源代码**:EB163 MapEditor的源代码完全开放,这意味着开发者可以查看、学习并修改其内部逻辑,根据自己的需求进行定制化开发,极大地扩展了编辑器的功能性和适应性。 3. **高效编辑**:编辑器提供了丰富的...

    SmartRF04EB.pdf

    ### SmartRF04EB开发套件详析:深入探索CC1110/CC2430/CC2510无线技术 #### 概述与手册内容 **SmartRF04EB.pdf**文档提供了对SmartRF04EB开发套件的全面介绍,该套件是基于Chipcon SmartRF04平台的高级开发工具,...

    EB FORM开发基础知识

    本节将深入探讨"EB FORM开发基础知识",结合提供的文档"Oracle Forms开发基础知识.doc",我们将详述FORM开发的核心概念、步骤以及基础知识。 1. **FORMS介绍** Oracle Forms是一种可视化开发环境,用于创建交互式...

    smartRF04EB驱动(含win7 64bit).zip

    smartRF04EB是德州仪器(TI)推出的一款无线射频(RF)开发工具,主要用于开发和测试低功耗无线通信技术,如蓝牙低功耗(BLE)、Zigbee或Thread等。在进行这些无线通信协议的硬件设计和软件开发时,这样的开发板非常实用。...

    EB8000 中文版教程

    1. **EB8000软件介绍**:首先,教程会介绍EB8000的基本概念,包括它的开发背景、主要功能以及在工业自动化中的应用领域。这将帮助读者理解软件的重要性及其在实际工作中的价值。 2. **安装与配置**:详细讲解如何...

    前端开发简历模板-eb前端开发-3年-北京.docx

    综上所述,这份简历展示了一位具有3年经验的EB前端开发工程师,他拥有全面的技术栈,包括前端基础、框架应用、工程化工具、后端接口处理以及移动端开发。他的项目经验表明他能够灵活应对不同类型的项目需求,是前端...

    前端开发简历模板-eb前端开发-3年-上海.docx

    "前端开发简历模板-eb前端开发-3年-上海.docx" 本资源是关于一名具有三年前端开发经验的简历模板,主要描述了该开发者的个人信息、工作经验、项目经验、技术栈等信息。 个人信息 * 姓氏:(隐私保护) * 性别:男...

    前端开发简历模板-eb前端开发-3年-杭州.doc

    在【标题】和【描述】中,我们看到的是一份针对前端开发者,特别是专注于EB前端开发,拥有3年工作经验,并且位于杭州的个人简历。这份简历展示了求职者在Web前端开发领域的专业技能和项目经验。 【核心知识点】 1....

    EB-Propsim-C8_2.3.rar_EB propsim_eb信道

    在2.3版本中,可能包含了一些更新和改进,如增强的处理能力、新增的信道模型或更友好的用户界面。 操作手册通常会分为几个部分,包括: 1. **产品概述**:这部分会介绍EB-C8信道仿真仪的基本功能、设计目标和适用...

Global site tag (gtag.js) - Google Analytics