在jsp页面输入中文后提交至数据库后出现乱码。我用的是ssh框架,我在jsp页面获取数据库的中文数据后不是乱码啊,但是在jsp页面输入中文后就出现乱码了,也就是点提交后页面和数据库都是乱码。我把提交方式该为post后还是不行。我的jsp页面和数据库设置的都是utf-8。我用了filter,但是不行。我最初解决这个乱码问题是把涉及到的jsp页面都设置成gh2312。
解决方案 »
- 循环表格,一次填充数据
- Struts动态表单报空指针错误
- 在eclipse上面运行servlet的问题,
- 关于sql2000 Error establishing socket 问题
- import static java.lang.System.out;为什么要加上static(入门)
- 100分送出。如何学习JSP?
- 快快快,高手们给完建议我就写代码了
- 求救~~!如何把String数组转换成String字符串
- 一个小问题,在线等(statement)
- 关于JSP的工作目录的设置问题?
- 同一个页面,将HTML转换成JSP之后变形。
- 为什么编辑器提交表单,内容是oracle.sql.CLOB@ebd4ee
<%request.setCharacterEncoding("gbk"); %>试试
然后将这个数据名传数据库
<form action="second.jsp" method="post">
<input type="text" id="username">
<input type="password" id="pwd">
<input type="submit" value="提交">
</form>second.jsp----中
<%request.setCharacterEncoding("gbk");
String name=request.getParameter("username");
String pwd=request.getParameter("pwd");
out.print("用户名:"+name+"密码:"+pwd);
%>
<jsp:useBean id="addnew" class="linkSql.NewsSql" scope="session"></jsp:useBean>
<jsp:setProperty property="newstitile" name="addnew" param="newstitle"/>
<jsp:setProperty property="newscontent" name="addnew" param="newscontent"/>
这样就直接给java类中的 变量给值了啊
用servlet的话就应该在dopost方法中加入 public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException
{
request.setCharacterEncoding("utf-8");//主要是要加入这句话!
var login_name = document.getElementById("loginname").value;
login_name = encodeURI(login_name);
login_name = encodeURI(login_name);
2、在服务器端对参数进行解码
String loginName = ParamUtil.getString(request, "login_name");
loginName = java.net.URLDecoder.decode(loginName,"UTF-8"); 不知道对你是否有用
String name = new String(request.getParameter("name ").getBytes("iso8859-1"),"gb2312"))
可能的情况比较多 给个网址自己去看下
是这个
试试
jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8
#14 的方法应该可以解决
果是form 提交
设置统一的页面的编码格式 之后 应该也是没问题滴!
<property name="url" value="jdbc:mysql://192.168.1.105:3306/digitalsf" />
在后边加一段,变成
<property name="url" value="jdbc:mysql://192.168.1.105:3306/digitalsf?useUnicode=true&characterEncoding=UTF-8" />
应该会有用
我以前也是搞了很久,把所有可能要统一编码的地方都试了,但还是不行
后来想想,就这个地方没设置了
tomcat下可以这样写
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000" useBodyEncodingForURI="true" uRIEncoding="UTF-8"
redirectPort="8443" />
将编码格式全变成utf-8的;
1.在接受的地方直接转变
String test = new String(test.getBytes("ISO-8859-1"),"UTF-8");
2.创建一个过滤器;
3.在struts.xml中配置
2.其次你在服务器端,写一个过滤器,设置下编码
public class FilterEncoding implements Filter {
private FilterConfig filterConfig=null;
private String encoding=null;
/* (non-Javadoc) * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding"); }
/* (non-Javadoc) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
String encoding=this.encoding;
if(encoding!=null)
{
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}
/* (non-Javadoc) * @see javax.servlet.Filter#destroy() */
public void destroy() {
this.encoding=null;
this.filterConfig=null;
}
}3.再次我问下LZform表单中method是用的get还是post方法,若是用get的话,我建议使用post,若你还是想用get方法,那么你去tomcat目录下的server.xml文件中,<Connector URL="GBK" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>红色的部分为添加的。
<constant name="struts.i18n.encoding" value="gbk" />
作用是:指定Web应用的默认编码集。对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312。另外JSP的页面编码设置GBK。就OK了。我用SSH都这么处理乱码的,很好用。
这种方法也试过了还是不行,
最后看来这个方法,在Struts配置文件<Struts></Struts>中加入<constant name="struts.i18n.encoding" value="gbk" />,就能正常显示了!