提交页面是utf-8,接受页面是utf-8,数据库是utf-8。
提交数据库以前中文都可以正常显示,但录入数据库时中文又变成了???号。在本地测试,数据库是中文的设置,录入则一点问题没有。页面均加入了以下代码!
<%@page pageEncoding="utf-8"%>
<%@page contentType="text/html; charset=utf-8"%>
<%request.setCharacterEncoding("utf-8");%>可还是出错,为什么阿!
提交数据库以前中文都可以正常显示,但录入数据库时中文又变成了???号。在本地测试,数据库是中文的设置,录入则一点问题没有。页面均加入了以下代码!
<%@page pageEncoding="utf-8"%>
<%@page contentType="text/html; charset=utf-8"%>
<%request.setCharacterEncoding("utf-8");%>可还是出错,为什么阿!
解决方案 »
- 飞鱼版的ewebeditor,在windows下正常,部署在LINUX下后中文提交出现乱码,中文变成“????”
- 高手求救:当浏览器关闭时如何判断是否已关闭
- 在servlet中使用定时器的问题
- 静态html能否点击导航栏的响应按钮下面显示响应的内容而不需要重新载入一个全新页面?
- 下载到客户端的applet能不能用tcp/ip协议根服务器通讯?有没有限制?
- 如何在JAVABEAN里得到存储过程的输出参数值
- 怎么清空struts2中ActionMessage
- 在部署描述器中加上<error-page>后,Tomcat启动会出错。
- jdbc连接sql server2000一问!
- select标签自动打开
- 起动TOMCAT时,老报错,提示:找不到文件”-Djava.endorsed.dirs="
- 怎样使用JSF的commandButton来弹出新的窗口?
<filter> <filter-name>Encoding Filter</filter-name> <filter-class>filters.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Encoding Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>对吗?
{
try
{
String des=new String(s_string.getBytes("GBK"),"iso8859-1");
return des;
}
catch(Exception ex)
{
String des="";
return des;
} }3 如果你真是百分百做到正确,你测试这个页面时,你的IE的字符应自动调到相应的字符集显示的,而不用人工来调。4 乱码的问题,和数据库或服务器是否为简体中文,完全无关。
package com.struts.common;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 {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
String value=filterConfig.getInitParameter("ignore");
if(value==null)
this.ignore=true;
else if(value.equalsIgnoreCase("true"))
this.ignore=true;
else
this.ignore=false;
} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO 自动生成方法存根
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
} public void destroy() {
// TODO 自动生成方法存根
this.encoding = null;
this.filterConfig = null;
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
<!-- Set Character Encoding-->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.struts.common.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Set Character Encoding-->
这是给编译器用的, 编译 JSP 是识别其中的字符。<%@page contentType="text/html; charset=utf-8"%>
这是给浏览器用的,让 IE/NS/MF 知道这里面的字符该怎么显示。
它和 response.setCharacterEncoding(); 同样的功能。<%request.setCharacterEncoding("utf-8");%>
这是给 Servlet 容器用的,告诉 Tomcat 之流 当我 Java 中处理时 getParameter 时应该怎样取数据。当你这个页面开始显示正常因为你 正确使用了 上面 第二个,
当你提交后不正常,可能接受 request 的 servlet/jsp(注意:他并不一定是你当前包含表单的JSP) 并没有 request.setCharacterEncoding(); 这个时候应该你在 servlet/jsp 中 request.setCharacterEncoding();或者用过滤器.以上三点都正确使用了么?