我查如中文时在数据库中显示乱码 把数据中的中文数据查询出来也显示乱码
IDE和MYSSQL我都使用默认编码 页面我使用gbk编码
请问这个问题怎么解决? 谢谢大家
22 个解决方案
#1
那是你数据库中的数据就是乱码!应该考虑在插入的时候就应该转变成中文!
#2
转码 行不行?
或者全部用Utf-8
或者全部用Utf-8
#3
全部使用 utf8 编码,可以解决这个问题
#4
注意数据库链接字符串
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=GBK
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=GBK
#5
characterEncoding
按樓上的試試。
按樓上的試試。
#6
乱码问题是常见问题了,具体机制我也不太清楚,我只知道,所有涉及编码的东西,全部用utf-8,就可以解决了
#7
你的mysql的版本是什么?我用的5.0的就没有这个问题
#8
我使用的也是mysql5.0 当我全使用默认的编码方式 问题还是存在啊!
全部默认的编码方式 是utf-8吗?
全部默认的编码方式 是utf-8吗?
#9
我想问你下 那些地方 需要变成UTF-8编码?
#10
编码问题。要将页面采用UTF-8编码
#11
1:用户页面输入“中文”采用UTF-8编码"e4b8ad e69687"
2:TOMCAT将其转换为ISO8859-1表示"e4 b8 ad e6 96 87"六个字节
3:JAVA程序中获取提交参数String str = getParameter("name"); 认为发送来的数据是以ISO8859-1编码"e4 b8 ad e6 96 87",然后将其转换为JAVA内部的Unicode编码"00e4 00b8 00ad 00e6 0096 0087"并赋给str.(可以使用request.setCharacterEncoding("UTF-8")来指定编码统一过滤)
4:str.getBytes( "ISO8859-1" )获得使用ISO8859-1解码str的字节数组"e4 b8 ad e6 96 87";new String( str.getBytes( "ISO8859-1" ), "utf-8" )使用utf-8给字节数组从新编码"e4b8ad e69687",并将其转换为Unicode"4e2d 6587";转码过程完毕。
这个过程中有错误吗?
2:TOMCAT将其转换为ISO8859-1表示"e4 b8 ad e6 96 87"六个字节
3:JAVA程序中获取提交参数String str = getParameter("name"); 认为发送来的数据是以ISO8859-1编码"e4 b8 ad e6 96 87",然后将其转换为JAVA内部的Unicode编码"00e4 00b8 00ad 00e6 0096 0087"并赋给str.(可以使用request.setCharacterEncoding("UTF-8")来指定编码统一过滤)
4:str.getBytes( "ISO8859-1" )获得使用ISO8859-1解码str的字节数组"e4 b8 ad e6 96 87";new String( str.getBytes( "ISO8859-1" ), "utf-8" )使用utf-8给字节数组从新编码"e4b8ad e69687",并将其转换为Unicode"4e2d 6587";转码过程完毕。
这个过程中有错误吗?
#12
mysql默认编码8859-1;
你需要先把mysql的默认编码改成gb2312或utf-8,主要根据你的整体~
我习惯都使用utf-8,IDE环境,mysql,mysql连接,jsp等等都使用utf-8,这样出现乱码的机会比较小。
#13
#14
#15
写一个过滤
#16
public class CharacterFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
response.setContentType("text/html;charset=UTF-8");
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
response.setContentType("text/html;charset=UTF-8");
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
#17
mysql数据库开发时 一般改为utf-8
#18
哎我是在sql server 2000上出现乱码
现在都没解决
同病相怜啊
现在都没解决
同病相怜啊
#19
<%@ page contentType="text/html;charset=gbk" %>
<%@ page language="java" import="java.sql.*"%>
<%
Connection conn = null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gbk","root","root");
if(conn==null){
System.out.println("get Conn Error");
}
Statement stmt=conn.createStatement();
int RS_result=0;
%>
<html>
<head>
<title>学习</title></head>
<body>
<%
RS_result=stmt.executeUpdate("insert into zqsworktable(username,password,email)values('zqs11松哥哥','zqs222','333@sohu.com')");
if(RS_result>0)
{
out.println("成功拉");
} else{
out.println("失败拉");
}
stmt.close();
conn.close();
%>
</body>
</html>
-----------------------------------------------------------------------------------
错误提示!
encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Data truncation: Data too long for column 'username' at row 1
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.MyJsp002_jsp._jspService(MyJsp002_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'username' at row 1
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2973)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
com.mysql.jdbc.Connection
请求给出解决办法
<%@ page language="java" import="java.sql.*"%>
<%
Connection conn = null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gbk","root","root");
if(conn==null){
System.out.println("get Conn Error");
}
Statement stmt=conn.createStatement();
int RS_result=0;
%>
<html>
<head>
<title>学习</title></head>
<body>
<%
RS_result=stmt.executeUpdate("insert into zqsworktable(username,password,email)values('zqs11松哥哥','zqs222','333@sohu.com')");
if(RS_result>0)
{
out.println("成功拉");
} else{
out.println("失败拉");
}
stmt.close();
conn.close();
%>
</body>
</html>
-----------------------------------------------------------------------------------
错误提示!
encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Data truncation: Data too long for column 'username' at row 1
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.MyJsp002_jsp._jspService(MyJsp002_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'username' at row 1
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2973)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
com.mysql.jdbc.Connection
请求给出解决办法
#20
使用类似语句取出mysql5.0中的 中文数据 取出来的是乱码
#21
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/shujuku?user=root&password=mfditfyu&useUnicode=true&characterEncoding=GBK");
Statement stm=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stm.executeQuery("select * from biao1");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/shujuku?user=root&password=mfditfyu&useUnicode=true&characterEncoding=GBK");
Statement stm=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stm.executeQuery("select * from biao1");
#22
在安装MYSQL时选择字符集时请选"GB2312",访问时Connection con=DriverManager.getConnection("jdbc:mysql://localhost/shujuku?user=root&password=abc&useUnicode=true&characterEncoding=GBK");
#23
还是查不进去 出现上面哪个错误!
#24
这个问题差不多一个月没有解决 CSDN上很多朋友提供了N多办法!但是都因为要改这改那很麻烦。现在是晚上1:24 (07/5/25夜)问题解决总结如下:
-----------------------------------------------------------
mysql5.0+myeclipse4.1+tomcat5.0 全部使用默认编码方式
1:插如数据到mysql中:
在页面上加入本页的编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要插入的中文文字由gb2312转变为iso-8859
title = new String(title.getBytes("GB2312"), "ISO-8859-1");
***注意此页面千万别在数据库的URL后面加任何编码方式*****
conn = java.sql.DriverManager.getConnection ("jdbc:mysql://localhost/zqswork","root","root");
2:从mysql中读出数据到页面:
依然在页面上加如编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要读出的中文由iso-8859转变为gb2312
<%username = new String(username.getBytes("ISO-8859-1"), "gb2312");%>
****注意此页面一定要在数据库url处加入编码方式(与上面相反)******
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312","root","root");
---------------------------------------------------------------ok 继续你的j2ee旅游吧! byzqswork
-----------------------------------------------------------
mysql5.0+myeclipse4.1+tomcat5.0 全部使用默认编码方式
1:插如数据到mysql中:
在页面上加入本页的编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要插入的中文文字由gb2312转变为iso-8859
title = new String(title.getBytes("GB2312"), "ISO-8859-1");
***注意此页面千万别在数据库的URL后面加任何编码方式*****
conn = java.sql.DriverManager.getConnection ("jdbc:mysql://localhost/zqswork","root","root");
2:从mysql中读出数据到页面:
依然在页面上加如编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要读出的中文由iso-8859转变为gb2312
<%username = new String(username.getBytes("ISO-8859-1"), "gb2312");%>
****注意此页面一定要在数据库url处加入编码方式(与上面相反)******
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312","root","root");
---------------------------------------------------------------ok 继续你的j2ee旅游吧! byzqswork
#1
那是你数据库中的数据就是乱码!应该考虑在插入的时候就应该转变成中文!
#2
转码 行不行?
或者全部用Utf-8
或者全部用Utf-8
#3
全部使用 utf8 编码,可以解决这个问题
#4
注意数据库链接字符串
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=GBK
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=GBK
#5
characterEncoding
按樓上的試試。
按樓上的試試。
#6
乱码问题是常见问题了,具体机制我也不太清楚,我只知道,所有涉及编码的东西,全部用utf-8,就可以解决了
#7
你的mysql的版本是什么?我用的5.0的就没有这个问题
#8
我使用的也是mysql5.0 当我全使用默认的编码方式 问题还是存在啊!
全部默认的编码方式 是utf-8吗?
全部默认的编码方式 是utf-8吗?
#9
我想问你下 那些地方 需要变成UTF-8编码?
#10
编码问题。要将页面采用UTF-8编码
#11
1:用户页面输入“中文”采用UTF-8编码"e4b8ad e69687"
2:TOMCAT将其转换为ISO8859-1表示"e4 b8 ad e6 96 87"六个字节
3:JAVA程序中获取提交参数String str = getParameter("name"); 认为发送来的数据是以ISO8859-1编码"e4 b8 ad e6 96 87",然后将其转换为JAVA内部的Unicode编码"00e4 00b8 00ad 00e6 0096 0087"并赋给str.(可以使用request.setCharacterEncoding("UTF-8")来指定编码统一过滤)
4:str.getBytes( "ISO8859-1" )获得使用ISO8859-1解码str的字节数组"e4 b8 ad e6 96 87";new String( str.getBytes( "ISO8859-1" ), "utf-8" )使用utf-8给字节数组从新编码"e4b8ad e69687",并将其转换为Unicode"4e2d 6587";转码过程完毕。
这个过程中有错误吗?
2:TOMCAT将其转换为ISO8859-1表示"e4 b8 ad e6 96 87"六个字节
3:JAVA程序中获取提交参数String str = getParameter("name"); 认为发送来的数据是以ISO8859-1编码"e4 b8 ad e6 96 87",然后将其转换为JAVA内部的Unicode编码"00e4 00b8 00ad 00e6 0096 0087"并赋给str.(可以使用request.setCharacterEncoding("UTF-8")来指定编码统一过滤)
4:str.getBytes( "ISO8859-1" )获得使用ISO8859-1解码str的字节数组"e4 b8 ad e6 96 87";new String( str.getBytes( "ISO8859-1" ), "utf-8" )使用utf-8给字节数组从新编码"e4b8ad e69687",并将其转换为Unicode"4e2d 6587";转码过程完毕。
这个过程中有错误吗?
#12
mysql默认编码8859-1;
你需要先把mysql的默认编码改成gb2312或utf-8,主要根据你的整体~
我习惯都使用utf-8,IDE环境,mysql,mysql连接,jsp等等都使用utf-8,这样出现乱码的机会比较小。
#13
#14
#15
写一个过滤
#16
public class CharacterFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
response.setContentType("text/html;charset=UTF-8");
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
response.setContentType("text/html;charset=UTF-8");
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
#17
mysql数据库开发时 一般改为utf-8
#18
哎我是在sql server 2000上出现乱码
现在都没解决
同病相怜啊
现在都没解决
同病相怜啊
#19
<%@ page contentType="text/html;charset=gbk" %>
<%@ page language="java" import="java.sql.*"%>
<%
Connection conn = null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gbk","root","root");
if(conn==null){
System.out.println("get Conn Error");
}
Statement stmt=conn.createStatement();
int RS_result=0;
%>
<html>
<head>
<title>学习</title></head>
<body>
<%
RS_result=stmt.executeUpdate("insert into zqsworktable(username,password,email)values('zqs11松哥哥','zqs222','333@sohu.com')");
if(RS_result>0)
{
out.println("成功拉");
} else{
out.println("失败拉");
}
stmt.close();
conn.close();
%>
</body>
</html>
-----------------------------------------------------------------------------------
错误提示!
encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Data truncation: Data too long for column 'username' at row 1
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.MyJsp002_jsp._jspService(MyJsp002_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'username' at row 1
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2973)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
com.mysql.jdbc.Connection
请求给出解决办法
<%@ page language="java" import="java.sql.*"%>
<%
Connection conn = null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gbk","root","root");
if(conn==null){
System.out.println("get Conn Error");
}
Statement stmt=conn.createStatement();
int RS_result=0;
%>
<html>
<head>
<title>学习</title></head>
<body>
<%
RS_result=stmt.executeUpdate("insert into zqsworktable(username,password,email)values('zqs11松哥哥','zqs222','333@sohu.com')");
if(RS_result>0)
{
out.println("成功拉");
} else{
out.println("失败拉");
}
stmt.close();
conn.close();
%>
</body>
</html>
-----------------------------------------------------------------------------------
错误提示!
encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Data truncation: Data too long for column 'username' at row 1
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.MyJsp002_jsp._jspService(MyJsp002_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'username' at row 1
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2973)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
com.mysql.jdbc.Connection
请求给出解决办法
#20
使用类似语句取出mysql5.0中的 中文数据 取出来的是乱码
#21
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/shujuku?user=root&password=mfditfyu&useUnicode=true&characterEncoding=GBK");
Statement stm=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stm.executeQuery("select * from biao1");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/shujuku?user=root&password=mfditfyu&useUnicode=true&characterEncoding=GBK");
Statement stm=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stm.executeQuery("select * from biao1");
#22
在安装MYSQL时选择字符集时请选"GB2312",访问时Connection con=DriverManager.getConnection("jdbc:mysql://localhost/shujuku?user=root&password=abc&useUnicode=true&characterEncoding=GBK");
#23
还是查不进去 出现上面哪个错误!
#24
这个问题差不多一个月没有解决 CSDN上很多朋友提供了N多办法!但是都因为要改这改那很麻烦。现在是晚上1:24 (07/5/25夜)问题解决总结如下:
-----------------------------------------------------------
mysql5.0+myeclipse4.1+tomcat5.0 全部使用默认编码方式
1:插如数据到mysql中:
在页面上加入本页的编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要插入的中文文字由gb2312转变为iso-8859
title = new String(title.getBytes("GB2312"), "ISO-8859-1");
***注意此页面千万别在数据库的URL后面加任何编码方式*****
conn = java.sql.DriverManager.getConnection ("jdbc:mysql://localhost/zqswork","root","root");
2:从mysql中读出数据到页面:
依然在页面上加如编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要读出的中文由iso-8859转变为gb2312
<%username = new String(username.getBytes("ISO-8859-1"), "gb2312");%>
****注意此页面一定要在数据库url处加入编码方式(与上面相反)******
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312","root","root");
---------------------------------------------------------------ok 继续你的j2ee旅游吧! byzqswork
-----------------------------------------------------------
mysql5.0+myeclipse4.1+tomcat5.0 全部使用默认编码方式
1:插如数据到mysql中:
在页面上加入本页的编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要插入的中文文字由gb2312转变为iso-8859
title = new String(title.getBytes("GB2312"), "ISO-8859-1");
***注意此页面千万别在数据库的URL后面加任何编码方式*****
conn = java.sql.DriverManager.getConnection ("jdbc:mysql://localhost/zqswork","root","root");
2:从mysql中读出数据到页面:
依然在页面上加如编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要读出的中文由iso-8859转变为gb2312
<%username = new String(username.getBytes("ISO-8859-1"), "gb2312");%>
****注意此页面一定要在数据库url处加入编码方式(与上面相反)******
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312","root","root");
---------------------------------------------------------------ok 继续你的j2ee旅游吧! byzqswork