JSP网页里是charset=UTF-8,Mysql5里存取的数据库的charset也设成了UTF-8,可为啥通过JSP网页存取中文还是显示乱码?

sunsys 2007-08-10 12:28:11
JSP网页里是charset=UTF-8:
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*" errorPage="error.jsp" %>

Mysql5里存取的数据库的charset也设成了UTF-8,可为啥通过JSP网页存取中文还是显示乱码?

还需要在Mysql5里添加啥设置,或在JSP网页里添加啥语句吗?
...全文
3122 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxy0659 2012-05-08
  • 打赏
  • 举报
回复
我用的是SSH架构写的 从网页向mySql 数据库中存入中文数据 数据库中存入的数据会变成乱码

每一个页面的设置为 都是charset=UTF-8:
RomandAccessFile 2007-08-22
  • 打赏
  • 举报
回复
Sorry..少了一点..那么数据库链接用
jdbc:mysql://192.168.0.200/asp?useUnicode=true&characterEncoding=GB2312
RomandAccessFile 2007-08-22
  • 打赏
  • 举报
回复
必解决中文问题
1.在Tomcat 的server.xml 中

<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="gbk" />

2.Filter
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>asp.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

package asp;
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 SetCharacterEncodingFilter implements Filter
{
/**
* Example filter that sets the character encoding to be used in parsing the incoming request
*/
/**
* Take this filter out of service.
*/
public void destroy()
{
}
/**
* Select and set (if specified) the character encoding to be used to interpret request parameters for this request.
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
// response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("GB18030");
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException
{
}
}
3.每个页面

<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>

一切就OK..
如果用Ajax
那么.在保证前三个部份的前题下.

get 不变
post 使用两次encodeURI
function createPostDo(/*条件*/,actionUrl)/*Ajax post 第二步 将Post的条件格式发送到指定的URL*/
{
post = encodeURI(/*条件*/);
post = encodeURI((/*条件*/);//两次,很关键
var xmlObj = new ActiveXObject('Msxml2.XMLHTTP');
var URL = actionUrl;//文件名需要调整成测试时的相应位置?
xmlObj.open ('post',URL,false);
xmlObj.setrequestheader("cache-control","no-cache");
xmlObj.setrequestheader("Content-Type","application/x-www-form-urlencoded");
xmlObj.send (post);//注意:POST方式,使用这个来发送内容?
}
penghao122 2007-08-22
  • 打赏
  • 举报
回复

看到乱码就要统一编码
看到乱码我就想起了过滤器

想当年乱码气吞万里如虎
baobao28 2007-08-22
  • 打赏
  • 举报
回复
存入:只要保证在后台输出的时候是中文,到数据库就是中文
取出:加字符转码,然后在后台输出看看,如果是中文,到页面也是中文。页面用GB2312
sunsys 2007-08-21
  • 打赏
  • 举报
回复
极少时也能存入2个不同中文字,有时1个中文字也存不入。 反正就是极不稳定, 大多时候报错
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'ItemName' at row 1

我现在是 Netbeans6+Tomcat6.0.13+Mysql5
sunsys 2007-08-21
  • 打赏
  • 举报
回复
各位老大, 我加了
<%@page language="java" pageEncoding="UTF-8" errorPage="error.jsp"%>

response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");

Worker.java的doUpdate函数里加了
Statement s = null;
s = con.createStatement();

s.executeUpdate("set names utf8");

s.executeUpdate(sql);

/////
现在偶尔存入mysql5的可以是中文了。在ItemName,偶尔存入1个中文字,或好几个相同的中文字都行,
但存入2个不同的中文字 就不行了,报错
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'ItemName' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1316)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1235)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
at com.borrowsys.db.Worker.doUpdate(Worker.java:52)
at com.borrowsys.db.Worker.updateItem(Worker.java:165)
at org.apache.jsp.updateitem_jsp._jspService(updateitem_jsp.java:115)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

怎么办啊?是doUpdate函数里加的s.executeUpdate("set names utf8"); 有错吗?
都快绝望了!
zhl0369 2007-08-15
  • 打赏
  • 举报
回复
我也遇到类似的问题:
http://community.csdn.net/Expert/topic/5710/5710366.xml?temp=.4726526

首先,你要保持容器 jsp页面 数据库 编码统一
其次 request.setCharacterEncoding("utf8");
sDuma 2007-08-15
  • 打赏
  • 举报
回复
String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=UTF-8"
后面加上 characterEncoding=UTF-8

还有一个比较隐蔽的问题:
如果你是用 DW 编辑的JSP页面,一定要在“页面属性”这项中,将编码改为 UTF-8
yanjinye 2007-08-15
  • 打赏
  • 举报
回复
如果LS的方法不行,再加上<%request.setCharacterEncoding("UTF-8");%>试下
hunter123456qw 2007-08-15
  • 打赏
  • 举报
回复
注意在保存jsp文件时,转化器设置为UTF-8(注意全大写,即有UTF-8的地方,UTF几个字母大写)

*另在引入js文件时,在EditPlus打开,在保存时,也要注意转换器,设置为UTF-8
smyl9989 2007-08-15
  • 打赏
  • 举报
回复
1.添加filter过滤 注明encoding为 UTF-8

2.jsp页面 <%@ page language="java" pageEncoding="UTF-8"%>

3.mysql安装时选择utf-8 ,建库的时候也要注明utf-8 编码(sql语句中)
175cm 2007-08-15
  • 打赏
  • 举报
回复
应该是在容器中,request时候 get post 出了问题吧,用一个filter
或者直接将 Tomcat5.5 看能不能改配置,使其默认编码是UTF8
CodeVitamin 2007-08-14
  • 打赏
  • 举报
回复
request.setCharacterEncoding("utf8");
nasiso 2007-08-14
  • 打赏
  • 举报
回复
上月也碰到这个问题,俺的解决方法是这样,楼主试看:
当时的环境是:装了中文语言包的英文2003 + (因为是给客户的服务器上安装,有个不知道为什么会不认gbk字符集的)中文JRE1.4 + Mysql5 +俺公司做的java后台服务

1)先用sql语句(帮助文档里面有)查数据库和表里面的字符集,然后通通用sql语句改成gb2312的;
2)java -version,看它有没冒出来说不支持这个字符集,如果冒了,就把它卸了重装;

然后搞定。。。
w39509027 2007-08-14
  • 打赏
  • 举报
回复
设置MYSQL的环境为GBK或UTF-8。
turionboy 2007-08-14
  • 打赏
  • 举报
回复
顶 楼上的
dazhen520 2007-08-13
  • 打赏
  • 举报
回复
sunsys 2007-08-13
  • 打赏
  • 举报
回复

如果Mysql里有中文, 读出还是中文。
只是通过JSP 网页输入中文,存入mysql5 就成乱码了。
用的是 Tomcat5.5 。

YibLee 2007-08-10
  • 打赏
  • 举报
回复
$charset = 'utf8';
mysql_query("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary");
加载更多回复(1)
内容概要:本文围绕不确定环境下的多式联运路径优化问题展开研究,提出并实现了基于AFO算法、遗传算法(GA)和粒子群优化算法(PSO)的三种智能优化方法,并借助Matlab平台完成算法编程与仿真。研究构建了考虑时间、成本、转运风险等多重不确定因素的路径优化模型,系统比较了AFO、GA、PSO三种算法在收敛速度、全局寻优能力和稳定性方面的表现,同时引入Matlab自带的全局优化搜索器作为基准对照,深入分析各算法在复杂物流网络中的适用边界与性能差异。研究表明,AFO算法在解决此类组合优化问题时展现出更快的收敛效率和更强的局部规避能力。; 适合人群:具备一定Matlab编程基础与运筹优化知识,从事物流工程、交通运输规划、智能算法开发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多式联运、综合货运网络中的路径决策支持系统构建;②为不确定性条件下复杂路径规划问题提供智能算法选型依据与技术实现方案;③支持科研人员复现主流优化算法并开展横向性能对比实验,推动算法改进与实际落地。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析算法实现流程,重点理解目标函数设计、约束条件处理及参数敏感性分析部分,可通过调整问题规模与算法参数进行对比实验,进一步拓展至动态路径规划或大规模网络优化等延伸场景。
内容概要:本文研究了基于QLearning自适应强化学习的PID控制器在自主水下航行器(AUV)运动控制中的应用,通过Matlab代码实现了控制算法的仿真验证。该方法融合强化学习的在线自适应能力与传统PID控制的稳定性优势,利用QLearning算法动态优化PID控制器的比例、积分、微分参数,以应对水下复杂流体环境、模型不确定性及外部干扰等挑战,从而提升AUV轨迹跟踪的精度、鲁棒性与动态响应性能。文中系统阐述了AUV的六自由度非线性动力学建模过程、QLearning算法的状态空间与动作空间设计、奖励函数构造及训练机制,并详细说明了PID参数自整定的闭环控制架构。仿真结果表明,相较于传统固定参数PID控制器,该智能控制策略在多种工况下均展现出更优的控制效果,有效抑制了超调,加快了响应速度,并增强了抗干扰能力。; 适合人群:具备自动控制理论、强化学习基础及Matlab/Simulink仿真能力,从事水下机器人、智能控制、海洋工程、自动化等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于AUV、UUV等无人水下平台的高精度自主导航与运动控制;②为解决非线性、强耦合、时变系统的控制器参数自适应整定问题提供智能化解决方案;③作为强化学习与经典控制理论深度融合的技术范例,推动智能控制算法在海洋装备中的工程化应用。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点剖析QLearning的状态-动作-奖励机制设计、PID参数更新逻辑及仿真对比实验结果,有条件者可在更复杂的动力学模型或实际硬件平台上进一步验证与优化算法性能。

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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