终于解决了myeclipse困扰我许久的乱码问题!!
2006-12-06 15:20
423 查看
1、request.getparameter 中的乱码问题的解决方法
处理方法一:
不知道什么时候开始(好像是在一次重新安装了myeclipse后),我从在java代码中的request.getparameter获取中文参数值的结果变成了乱码,上网搜索了一番,暂时得到这么一个解决方法:
(1)、首先在jsp页面首部添加这么一段:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
(2)、那么下一步(jsp或者java)如果从上面这个jsp中获取某一参数时(如companyName),要这么处理:
QuestionaryManager qManager = new QuestionaryManager();
String companyName = (String) request.getParameter("companyName");
String gCompanyName = "";
try {
gCompanyName = new String(companyName.getBytes("ISO-8859-1"), "GBK");//经过zhuanma
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
companyName 是乱码,经过转码处理后,gCompanyName 就是正常字符了。
这样做很笨,很麻烦!增加的代码量可壮观了!并且维护起来麻烦!
处理方法二:
在web.xml里面加过滤器,一劳永逸!
(1)、先添加这么一个转码的类
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public final class CharacterEncodingFilter
implements Filter
{
public CharacterEncodingFilter()
{
System.out.println("==CharacterEncodingFilter==");
encoding = "gb2312";
ignore = false;
}
public void init(FilterConfig config)
{
System.out.println("==init==");
if(config.getInitParameter("encoding") != null)
encoding = config.getInitParameter("encoding");
if(config.getInitParameter("ignore") != null)
ignore = (new Boolean(config.getInitParameter("ignore"))).booleanValue();
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
System.out.println("==doFilter==");
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
if(!ignore)
{
req.setCharacterEncoding(encoding);
// res.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}
public void destroy()
{
}
private String encoding;
private boolean ignore;
}
(2)、在web.xml里面添加过滤器filter:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>CharacterEncodingFilter</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>*.do</url-pattern> //过滤所有.do文件
</filter-mapping>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>*.jsp</url-pattern> //过滤所有.jsp文件
</filter-mapping>
这样,所有的request.getparameter都会经过这个过滤器处理,乱码问题就没有了,而且可以任意修改<param-value>GBK</param-value>,想怎么encodeing,就怎么encoding!
2、在myeclipse中查看jsp文件的时候,jsp中的中文无法正常显示,乱码!!
在myeclipse中右键点击jsp文件,选择properties,在text file encoding中选择Other,在下拉框中输入GBK,然后Apply——〉OK,搞定!
一直都没想过这个下拉列表可以输入东西,只想下拉列表中没有GBK,选不上这项,没想到可以自己输进去,汗,折腾了许久呢!!
处理方法一:
不知道什么时候开始(好像是在一次重新安装了myeclipse后),我从在java代码中的request.getparameter获取中文参数值的结果变成了乱码,上网搜索了一番,暂时得到这么一个解决方法:
(1)、首先在jsp页面首部添加这么一段:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
(2)、那么下一步(jsp或者java)如果从上面这个jsp中获取某一参数时(如companyName),要这么处理:
QuestionaryManager qManager = new QuestionaryManager();
String companyName = (String) request.getParameter("companyName");
String gCompanyName = "";
try {
gCompanyName = new String(companyName.getBytes("ISO-8859-1"), "GBK");//经过zhuanma
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
companyName 是乱码,经过转码处理后,gCompanyName 就是正常字符了。
这样做很笨,很麻烦!增加的代码量可壮观了!并且维护起来麻烦!
处理方法二:
在web.xml里面加过滤器,一劳永逸!
(1)、先添加这么一个转码的类
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public final class CharacterEncodingFilter
implements Filter
{
public CharacterEncodingFilter()
{
System.out.println("==CharacterEncodingFilter==");
encoding = "gb2312";
ignore = false;
}
public void init(FilterConfig config)
{
System.out.println("==init==");
if(config.getInitParameter("encoding") != null)
encoding = config.getInitParameter("encoding");
if(config.getInitParameter("ignore") != null)
ignore = (new Boolean(config.getInitParameter("ignore"))).booleanValue();
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
System.out.println("==doFilter==");
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
if(!ignore)
{
req.setCharacterEncoding(encoding);
// res.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}
public void destroy()
{
}
private String encoding;
private boolean ignore;
}
(2)、在web.xml里面添加过滤器filter:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>CharacterEncodingFilter</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>*.do</url-pattern> //过滤所有.do文件
</filter-mapping>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>*.jsp</url-pattern> //过滤所有.jsp文件
</filter-mapping>
这样,所有的request.getparameter都会经过这个过滤器处理,乱码问题就没有了,而且可以任意修改<param-value>GBK</param-value>,想怎么encodeing,就怎么encoding!
2、在myeclipse中查看jsp文件的时候,jsp中的中文无法正常显示,乱码!!
在myeclipse中右键点击jsp文件,选择properties,在text file encoding中选择Other,在下拉框中输入GBK,然后Apply——〉OK,搞定!
一直都没想过这个下拉列表可以输入东西,只想下拉列表中没有GBK,选不上这项,没想到可以自己输进去,汗,折腾了许久呢!!
相关文章推荐
- ajax提交中文数据,乱码问题,困扰我整整两天。终于被我解决。。。
- 困扰已久的乱码问题终于得到解决,希望下次出现更多问题,解决问题的过程很愉快!!!!!
- 困扰许久的文泉驿显示慢问题终于解决了
- 终于解决了一个困扰我许久的问题:通过window.showModalDialog打开的页面,Form提交,标题丢失
- 终于解决图片的exif信息在liunx下存储后乱码的问题
- MyEclipse查看jar包源代码乱码问题解决
- 解决MyEclipse导入项目中文乱码问题
- myEclipse设置 解决jsp页面显示乱码问题
- MyEclipse中的jsp文件中引入外部js文件时,乱码问题的解决
- asp页面下的乱码问题终于解决了
- 即兴知识点-3 myeclipse中,项目上有个叉报错,文件没有错误,或者没有jre包 解决那别发 注释乱码问题
- 今天长期困扰我的一个问题 终于解决 不多说看文章
- Nhibernate 困扰我一个星期的问题 终于解决了
- 解决properties文件乱码问题(eclipse和MyEclipse)
- Myeclipse解决从SVN检出代码中文乱码问题
- 复制Java源文件到MyEclipse后乱码问题怎么解决?
- 【转】终于解决了Apache乱码问题
- 解决MyEclipse导入工程注释乱码问题
- Java笔记5:解决MyEclipse控制台输入中文乱码输出问题(Eclipse也可以用)
- hjr-Eclipse与MyEclipse乱码问题解决