首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

pager-taglib中文搜索乱码有关问题

2013-07-20 
pager-taglib中文搜索乱码问题使用pager-taglib,在使用参数pg:param namexxxx/时,翻页总是乱码?看了

pager-taglib中文搜索乱码问题
使用pager-taglib,在使用参数<pg:param name="xxxx"/>时,翻页总是乱码?看了很多的解决办法,包括重新
编译jar包,value = java.net.URLEncoder.encode(value,"GBK")。使用filter等等都不行。那位大侠能解决?
先谢谢了!

[解决办法]
还有就是你看看你页面的编码和解码都是否正确。乱码无非就是你编码解码的问题,用什么编码就要用什么解码。否则必会乱码,即使不乱码,也是个别碰巧
[解决办法]

引用:
引用:
不应该啊~用过滤器处理应该能解决啊,get方式的乱码你怎么处理的啊??


strtus.i18n.encoding=gbk.
用过滤器如何解决,您能给出代码么?先谢谢了!

建议用utf8作为统一的编码

[解决办法]
UTF-8
[解决办法]
引用:
不应该啊~用过滤器处理应该能解决啊,get方式的乱码你怎么处理的啊??
strtus.i18n.encoding=gbk.
用过滤器如何解决,您能给出代码么?先谢谢了!
建议用utf8作为统一的编码


首先统一编码,在改处理的地方进行utf-8
另外我以前也遇到另外一种,就是数据库里面没有设置 utf-8  ,程序里面再怎么弄都是乱码,后来才想起了是数据库字段属性设置 utf-8 。




希望的能有帮助


[解决办法]
我之前也遇到过lz相同的问题,建议你统一使用UTF-8编码。及时配置过滤器等也无法解决这个问题。写一个转换字符编码的类就可以解决问题。
public class ToUtf8String {
public static String toUtf8String(String s){
        StringBuffer sb = new StringBuffer();
        for (int i=0;i<s.length();i++){
            char c = s.charAt(i);
           if (c >= 0 && c <= 255){sb.append(c);}
           else{
               byte[] b;
               try { b = Character.toString(c).getBytes("utf-8");}
               catch (Exception ex) {
                   System.out.println(ex);


                   b = new byte[0];
               }
               for (int j = 0; j < b.length; j++) {
                   int k = b[j];
                   if (k < 0) k += 256;
                   sb.append("%" + Integer.toHexString(k).toUpperCase());
               }
           }
       }
       return sb.toString();
   }
}

在action中调用该类方法就可以解决pager-taglib分页乱码问题。
楼主给分!
[解决办法]

引用:
使用pager-taglib,在使用参数<pg:param name="xxxx"/>时,翻页总是乱码?看了很多的解决办法,包括重新
编译jar包,value = java.net.URLEncoder.encode(value,"GBK")。使用filter等等都不行。那位大侠能解决?
先谢谢了!

过滤器应该没问题,是不是写的有问题(看看你的jsp页面编码跟filter编码是否一致)
如果真不行的话,有个方法可以试试 修改tomcat的server.xml

    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />
[解决办法]
凤姐说全用UTF-8 不带乱码的
[解决办法]
建项目开始时就把过滤器写好就应该没事了
[解决办法]
试试这个filter吧

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;

/**
 * <b>CharacterEncodingFilter。</b>
 * <p><b>详细说明:</b></p>
 * <!-- 在此添加详细说明 -->


 * 无。
 * <p><b>修改列表:</b></p>
 * <table width="100%" cellSpacing=1 cellPadding=3 border=1>
 * <tr bgcolor="#CCCCFF"><td>序号</td><td>作者</td><td>修改日期</td><td>修改内容</td></tr>
 * <!-- 在此添加修改列表,参考第一行内容 -->
 * <tr><td>1</td><td>Administrator</td><td>2010-9-11 下午01:43:19</td><td>建立类型</td></tr>
 * 
 * </table>
 * @version 1.0
 * @author Oliver
 * @since 1.0
 */
public class CharacterEncodingFilter implements Filter {

protected String encoding=null;

protected FilterConfig filterConfig=null;


public void destroy()
{
encoding=null;
filterConfig=null;
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
{
if(encoding!=null){
request.setCharacterEncoding(encoding);
}
chain.doFilter(request,response);
}

public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig=filterConfig;
this.encoding=this.filterConfig.getInitParameter("encoding");
}


}


另外,你的项目是utf-8的编码,要保证编码统一,jsp也么和里面的html也要用utf-8的编码
[解决办法]
加个过滤器不行吗?

[解决办法]
action 的select方法是处理get分页请求的,list处理post请求:

public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
int offset=0;
//获取请求中的参数值
String pg=request.getParameter("pager.offset");
String name=request.getParameter("nameForm");
Warehouse w=new Warehouse();
if(pg!=null&&!pg.equals("-15")){//参数值不为空,将值转换为整形
 offset = Integer.parseInt(pg);
}
if(name != null && !name.equals("")){

w.setName(name);
    request.setAttribute("nameForm", name);
   }
PagerModel pm=warehouseService.selectWarehouse(w, pageSize, offset);
//获得数据列表
     list=pm.getList();
     //获得仓库列表的大小
     int warehouseSize=pm.getList().size();


     //获得总记录数
     int total=pm.getTotal();
     request.setAttribute("warehouseList", list);
     request.setAttribute("warehouseSize", warehouseSize);
     request.setAttribute("total", total);
     request.setAttribute("pageSize", pageSize);
 return mapping.findForward("success");
}
[解决办法]
你用的是strut2标签吧 像这样<s:property value="name"/>

这个在struts2.18的时候是以unicode编码显示在页面上的 为了更好的国际化

所以建议使用el表达式 ${name} 这样就是汉字了。不会有乱码。。
[解决办法]
乱码问题头疼~
[解决办法]
只能支持一下了,过滤器按说就可以的。
[解决办法]
我也遇到了相同的问题,用了重新编写的jar包也没法解决乱码问题
[解决办法]
全部用utf8吧

热点排行