我用的是MySQL和JSP,从MySQL数据库中读取数据到JSP页面上,出现了乱码,JSP的编码格式是 page contentType="text/html;charset=gbk"
数据库用的也是编码格式,ENGINE=InnoDB DEFAULT CHARSET=gbk ,为什么还会出现乱码啊?是不是应该在server.xml文件的<Connector……/>中添加点什么啊
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="gbk"/>
还是应该在下面的url中添加啊?
<Context path="/jiudian" docBase="jiudian"
debug="5" reloadable="true" crossContext="true" workDir="">
<Resource name="jdbc/jiudian"
auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="1234"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/test/>
</Context>大家帮帮忙,在线等!!!!!
数据库用的也是编码格式,ENGINE=InnoDB DEFAULT CHARSET=gbk ,为什么还会出现乱码啊?是不是应该在server.xml文件的<Connector……/>中添加点什么啊
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="gbk"/>
还是应该在下面的url中添加啊?
<Context path="/jiudian" docBase="jiudian"
debug="5" reloadable="true" crossContext="true" workDir="">
<Resource name="jdbc/jiudian"
auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="1234"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/test/>
</Context>大家帮帮忙,在线等!!!!!
在你的jsp文件中写入<% request.setCharacterEncoding("GBK");%>
当然了,数据库中即使存错了,查询后在JSP上显示也设置错了,有些情况下会有负负得正的效果,但这显然不够严谨;
确认数据库中存放的是正确的数据后,用eclipse写个简单的java程序,就连接数据库查询一个表,读取其中带中文的列,显示出来,过程中可以不断修改连接MySql的URL中的编码设置,直到你看到正确的中文;
MySql是支持URL定制连接字符集的,改改试试总能弄对,如果是DB2什么的乱了,那就只能应用里去转码,或者做成代理驱动透明地加入转码过程,这样应用不需要做任何修改。
你要在接受的地方在重新编码一次就可以了比如:String test = "";
try {
test = new String(test.getBytes("ISO-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》