为什么从mysql读出中文数据到页面显示是乱码

phxwjg 2008-05-14 10:59:42
我是用struts+hibernate架构,在struts-config.xml中的数据源设成了<set-property property="url"
value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" />
页面上也加了<%@ page contentType="text/html;charset=UTF-8" language="java"%>
页面中输上的中文没有问题,但从mysql中读取中文时就会出现乱码
我用的是mysql5.0
请帮忙解决,谢谢!

...全文
427 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
h5582379 2012-06-08
  • 打赏
  • 举报
回复
把MYSQL里面那个字符集排至改为UTF-8就OK了
吐司vivi 2008-05-20
  • 打赏
  • 举报
回复
在程序中转码后,还要看看你得页面是什么编码
phxwjg 2008-05-20
  • 打赏
  • 举报
回复
解决不了了
zxcv88888 2008-05-16
  • 打赏
  • 举报
回复
把UTF -8 强转成GBK 或者 GBK 强转成UTF -8 反正也容易,保证二边一致就行了,

Insourcia_Java_Net 2008-05-16
  • 打赏
  • 举报
回复
用过滤器就不用管页面和数据库的编码了吧
我刚加了
也配置了web.xml文件
<?xml version="1.0" encoding="GBK"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
first</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filter.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>

</filter-mapping>


</web-app>

还是没解决~~~~
xiaoqiangcn 2008-05-16
  • 打赏
  • 举报
回复


package com.ufinity.mealsordering.common.util;

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 EncodingFilter implements Filter {
private String _charSet = null;


public void destroy() {
}

public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
if (null == this._charSet) {


arg0.setCharacterEncoding("UTF-8");


} else {

arg0.setCharacterEncoding(this._charSet);
}
arg2.doFilter(arg0, arg1);
}


public void init(FilterConfig arg0) throws ServletException {
this._charSet = arg0.getInitParameter("charSet");
}

}

你那是数据库和页面的编码不同的问题,你加下上面的过滤器试试。
Insourcia_Java_Net 2008-05-16
  • 打赏
  • 举报
回复
mysql乱码很头痛啊!
我现在也遇到这种问题
数据库是乱码
读出是乱码
写都写不进去
zxcv88888 2008-05-16
  • 打赏
  • 举报
回复
楼主真正的把GBK 转成UTF8了吗 是那种真正的转编码,其实不建议用UTF-8 用GBK的话挺好的,如果你只对国内用户开放的话
phxwjg 2008-05-16
  • 打赏
  • 举报
回复
唉,我把mysql中的编码从utf8换到gbk再换到gb2312

问题依旧!!!!!!!!!!!
我相映的也把页面中的编码也换了,还是---------------依旧!!!!!!!!!!!
gongyali2005 2008-05-15
  • 打赏
  • 举报
回复
乱码问题肯定是编码不一致.我一般是写过滤器.
MYSQL设置编码要从MY.INI里改
6216 2008-05-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yingtju 的回复:]
server处理客户请求
jsp页面编码
数据库编码
都统一使用同样的编码
[/Quote]

水瘦山寒 2008-05-15
  • 打赏
  • 举报
回复
方案一:<%@ page contentType="text/html;charset=UTF-8" language="java"%> 加上属性pageEncoding="UTF-8"试试。
方案二:做个过滤器试。
不过首先确定数据库中的中文不是乱码
yingtju 2008-05-15
  • 打赏
  • 举报
回复
server处理客户请求
jsp页面编码
数据库编码
都统一使用同样的编码
亿昇 2008-05-15
  • 打赏
  • 举报
回复
楼主可以先确定是数据库里是乱码
还是去出来后是乱码
然后才能对症下药啊
kokobox 2008-05-15
  • 打赏
  • 举报
回复
用GBK或gb2312试一试

表的编码也用GBK或GB2312

数据库中的数据最好不要用手工加进去,手工加进去有的时候取出来是乱码的

ximao0529 2008-05-15
  • 打赏
  • 举报
回复
我也有同样的情况,希望LZ早点解决。
好像Mysql 默认插入的数据就是utf-8
breeze111111 2008-05-15
  • 打赏
  • 举报
回复
ls正解..先把mysql数据库的编码改掉
wsh622827 2008-05-15
  • 打赏
  • 举报
回复
首先你的mysql数据库的编码设置必须为gb2312
读取数据显示乱码可以用response.setContentType()方法设置编码为Gb2312
phxwjg 2008-05-15
  • 打赏
  • 举报
回复
数据库里存进去的也是乱码,取出来也是乱码

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧