下面这个是处理乱码的但是数据库那边还是会出现乱码
package cn.com;
public class chStr {
public String chStr(String str){
if(str==null){
str="";
}else{
try{
str=(new String(str.getBytes("iso-8859-1"),"UTF-8")).trim();
}catch(Exception e){
e.printStackTrace(System.err);
}
}
return str;
}
public String convertStr(String str1){
if(str1==null){
str1="";
}else{
try{
str1=str1.replaceAll("<","<");
str1=str1.replaceAll(">",">");
str1=str1.replaceAll(" "," ");
str1=str1.replaceAll("\r\n","<br>");
}catch(Exception e){
e.printStackTrace(System.err);
}
}
return str1;
}
}
17 个解决方案
#1
首先用System.out.println()在Servlet里面输出下中文,如果不是乱码,说明不是jsp向Servlet传值乱码,那就是数据库的原因了。因为数据库中的表也有它的编码方式的。
#2
tomcat--conf--server.xml
找到<connector port="8080" 后面加上URIEncoding="utf-8" />
找到<connector port="8080" 后面加上URIEncoding="utf-8" />
#3
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=""UTF-8/>
#4
我在登陆页面的时候有写一句
在servlet中有写System.out.print("登录成功!欢迎"+request.getParameter("username")+"光临本系统!");这么一句,登陆后在Consele显示出来的不是乱码。
这样确定不是传值乱码。
而且我在插入数据之后,在网页上是可以显示我插入的数据,那边也显示也不是乱码。
只有查看数据库的时候那边才显示乱码。
在servlet中有写System.out.print("登录成功!欢迎"+request.getParameter("username")+"光临本系统!");这么一句,登陆后在Consele显示出来的不是乱码。
这样确定不是传值乱码。
而且我在插入数据之后,在网页上是可以显示我插入的数据,那边也显示也不是乱码。
只有查看数据库的时候那边才显示乱码。
#5
看看你数据库是什么编码
#6
上面两位朋友说在 <Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>加上URIEncoding="UTF-8"我试了一下,加进去后,在重启tomcat但是还是出现一样的情况。
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>加上URIEncoding="UTF-8"我试了一下,加进去后,在重启tomcat但是还是出现一样的情况。
#7
怎样查看数据库的编码啊???
有人说数据库不支持“utf-8”是真的还是假的啊
有人说数据库不支持“utf-8”是真的还是假的啊
#8
怎样查看数据库编码啊??? 有人说数据库不能用"UTF-8"是真的还是假的啊。
#9
数据库跟java后台的编码格式不一样,看看你取出来的是不是乱码,不是的话,就没有很大关系,是的话,再取的时候转下格式。
#10
你用的什么数据库,我才能告诉你怎么设置编码啊
#11
SQL 2005
#12
1.表单提交是不是用post方式;
2.有没有用ajax技术提交数据;
3.调教到action或servlet中,在插入到数据库前输出下,看看是否正常;
4.直接在数据库中插入你所提交的内容,看看是否正常;
2.有没有用ajax技术提交数据;
3.调教到action或servlet中,在插入到数据库前输出下,看看是否正常;
4.直接在数据库中插入你所提交的内容,看看是否正常;
#13
要看你的提交方式:
get方式:
在tomcat的service.xml中加一个URIEncoding="UTF-8",如下:
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=""UTF-8/>
post方式:
1.先写一个过滤器类:
package com.idesvo.filter;
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 EncodeFilter implements Filter {
private String encoding="";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(encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
encoding=config.getInitParameter("encoding");
}
}
2.再在web.xml中建关联这处过滤就OK了:
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.idesvo.filter.EncodeFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
get方式:
在tomcat的service.xml中加一个URIEncoding="UTF-8",如下:
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=""UTF-8/>
post方式:
1.先写一个过滤器类:
package com.idesvo.filter;
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 EncodeFilter implements Filter {
private String encoding="";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(encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
encoding=config.getInitParameter("encoding");
}
}
2.再在web.xml中建关联这处过滤就OK了:
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.idesvo.filter.EncodeFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
#14
补充一下,我给的这个filter-mapping应该放在所有filter-mapping的上面。
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
#15
要不要写个过滤器呢?
#16
my921 谢了,三楼的你回答的,我的问题解决了,谢谢啊
#17
我也出现过这种错误,把所有的编码全部设为gb2312就好了。
#1
首先用System.out.println()在Servlet里面输出下中文,如果不是乱码,说明不是jsp向Servlet传值乱码,那就是数据库的原因了。因为数据库中的表也有它的编码方式的。
#2
tomcat--conf--server.xml
找到<connector port="8080" 后面加上URIEncoding="utf-8" />
找到<connector port="8080" 后面加上URIEncoding="utf-8" />
#3
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=""UTF-8/>
#4
我在登陆页面的时候有写一句
在servlet中有写System.out.print("登录成功!欢迎"+request.getParameter("username")+"光临本系统!");这么一句,登陆后在Consele显示出来的不是乱码。
这样确定不是传值乱码。
而且我在插入数据之后,在网页上是可以显示我插入的数据,那边也显示也不是乱码。
只有查看数据库的时候那边才显示乱码。
在servlet中有写System.out.print("登录成功!欢迎"+request.getParameter("username")+"光临本系统!");这么一句,登陆后在Consele显示出来的不是乱码。
这样确定不是传值乱码。
而且我在插入数据之后,在网页上是可以显示我插入的数据,那边也显示也不是乱码。
只有查看数据库的时候那边才显示乱码。
#5
看看你数据库是什么编码
#6
上面两位朋友说在 <Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>加上URIEncoding="UTF-8"我试了一下,加进去后,在重启tomcat但是还是出现一样的情况。
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>加上URIEncoding="UTF-8"我试了一下,加进去后,在重启tomcat但是还是出现一样的情况。
#7
怎样查看数据库的编码啊???
有人说数据库不支持“utf-8”是真的还是假的啊
有人说数据库不支持“utf-8”是真的还是假的啊
#8
怎样查看数据库编码啊??? 有人说数据库不能用"UTF-8"是真的还是假的啊。
#9
数据库跟java后台的编码格式不一样,看看你取出来的是不是乱码,不是的话,就没有很大关系,是的话,再取的时候转下格式。
#10
你用的什么数据库,我才能告诉你怎么设置编码啊
#11
SQL 2005
#12
1.表单提交是不是用post方式;
2.有没有用ajax技术提交数据;
3.调教到action或servlet中,在插入到数据库前输出下,看看是否正常;
4.直接在数据库中插入你所提交的内容,看看是否正常;
2.有没有用ajax技术提交数据;
3.调教到action或servlet中,在插入到数据库前输出下,看看是否正常;
4.直接在数据库中插入你所提交的内容,看看是否正常;
#13
要看你的提交方式:
get方式:
在tomcat的service.xml中加一个URIEncoding="UTF-8",如下:
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=""UTF-8/>
post方式:
1.先写一个过滤器类:
package com.idesvo.filter;
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 EncodeFilter implements Filter {
private String encoding="";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(encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
encoding=config.getInitParameter("encoding");
}
}
2.再在web.xml中建关联这处过滤就OK了:
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.idesvo.filter.EncodeFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
get方式:
在tomcat的service.xml中加一个URIEncoding="UTF-8",如下:
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=""UTF-8/>
post方式:
1.先写一个过滤器类:
package com.idesvo.filter;
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 EncodeFilter implements Filter {
private String encoding="";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(encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
encoding=config.getInitParameter("encoding");
}
}
2.再在web.xml中建关联这处过滤就OK了:
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.idesvo.filter.EncodeFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
#14
补充一下,我给的这个filter-mapping应该放在所有filter-mapping的上面。
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
#15
要不要写个过滤器呢?
#16
my921 谢了,三楼的你回答的,我的问题解决了,谢谢啊
#17
我也出现过这种错误,把所有的编码全部设为gb2312就好了。