浏览 5864 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-12-02
jdbc:mysql://localhost:3306/jpcf?unicode=true&characterEncoding=gbk 但我在用 Session session = HibernateUtil.currentSession(); tx = session.beginTransaction(); Cltype ct = (Cltype) session.load(Cltype.class, vpform.getCltype_id()); vp.setCltype(ct); session.save(vp); tx.commit(); 保存ct的内容时,数据库中正常保存 中文字符,我可以在mysql的控制台看到 但我用 Session session = HibernateUtil.currentSession(); tx = session.beginTransaction(); allVehicle = session.find("from VehicleProperty vp"); tx.commit(); 查询到的记录在jsp页面上显示却是乱码 怎么解决啊? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-12-02
cdreamer 写道 tomcat 的server.xml中无法配置:
jdbc:mysql://localhost:3306/jpcf?unicode=true&characterEncoding=gbk 用?代替? 用&代替& |
|
返回顶楼 | |
发表时间:2004-12-02
在tomcat的server.xml中配置正确后
页面输出还是乱码 我做了个servletFilter package com.jpcf.filter; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class CharacterEncoding extends HttpServlet implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; public void destroy() { this.encoding = null; this.filterConfig = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String encoding = selectEncoding(request); if (encoding != null) { request.setCharacterEncoding(encoding); System.out.println("character Encodinged"); } chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); } protected String selectEncoding(ServletRequest request) { return (this.encoding); } } 但是这样一过滤后 连写到mysql数据库中都成乱码了 该怎么解决啊? 是不是需要对hibernate取出来的数据用 getBytes()来转换,但这样太麻烦了 有没有更好的办法啊? |
|
返回顶楼 | |
发表时间:2004-12-02
package com.sales.util;
import java.beans.*; import java.io.*; import java.lang.reflect.*; import java.util.*; import org.apache.commons.beanutils.*; public class ObjectBeanUtils { public ObjectBeanUtils() { } /** * 对List对象进行转码处理 * @param List List对象 * @return String */ public static void ObjectConvert(List list) { if (list == null && ! (list instanceof List)) { return; } for (int i = 0; i < list.size(); i++) { Object co = list.get(i); ObjectConvert(co); } } public static void ObjectConvert(Iterator iter){ if (iter == null && ! (iter instanceof Iterator)) { return; } while(iter.hasNext()){ Object co = iter.next(); ObjectConvert(co); } } /** * 对Object(Class)对象进行转码处理 * @param o Object对象 * @return String */ public static void ObjectConvert(Object o) { try { Map map = BeanUtils.describe(o); Set keySet = map.keySet(); for (Iterator iter = keySet.iterator(); iter.hasNext(); ) { Object element = (Object) iter.next(); PropertyDescriptor desc = PropertyUtils.getPropertyDescriptor(o, element.toString()); Class cl = desc.getPropertyType(); System.out.print(cl.getName()); if (cl.equals(String.class)) { BeanUtils.setProperty(o, element.toString(), ObjectCharacterConvertChinese(map.get(element))); } } } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } private static String ObjectCharacterConvertChinese(Object value) { if (value == null && ! (value instanceof String)) { return ""; } try { String temp_p = (String) value; byte[] temp_t = temp_p.getBytes("ISO-8859-1"); String unicode = new String(temp_t, "gbk"); return unicode; } catch (UnsupportedEncodingException e) { return ""; } } private static String ObjectCharacterConvertISO(Object value) { if (value == null && ! (value instanceof String)) { return ""; } try { String temp_p = (String) value; byte[] temp_t = temp_p.getBytes("gbk"); String unicode = new String(temp_t, "ISO-8859-1"); return unicode; } catch (UnsupportedEncodingException e) { return ""; } } } |
|
返回顶楼 | |
发表时间:2004-12-06
没有必要这么麻烦。
做个filter。就搞定。 |
|
返回顶楼 | |