日期:2014-05-17  浏览次数:20750 次

关于一个很头痛的问题——乱码
相信大家都遇到过页面乱码,数据库乱码的时候把,说说我的:
我的事Mysql数据库,设置的字符集是utf-8.页面编码全部是utf-8。整个项目全部是utf-8的编码:
1.我可以直接在数据库里面手动插入中文,英文,然后在页面中将数据库内容读出来都是正常的,没有乱码;
2.在页面表单填入英文字符,提交的数据库都是好的;
3.如果在Jsp页面的表单里面有中文的话,提交到数据库里面,数据库中提交的中文部分就是乱码的,页面读出来也是乱码
4.如果在jsp表单提交的action(LoginAction)中的execute方法中强制转换页面中的中文部分,可以实现不乱吗,并且这种强制装换只能是(比方说提交的user.username为中文)
user.setUsername(new String(user.getUsername().getBytes("iso-8859-1"),"utf-8");像这样转换后提交到数据库的就不乱码了。并且只能这样装换,换别的编码都不行。
 


以前数据库字段比较少,就转换了一下,现在数据库字段多了发现这样转换很麻烦,这个问题怎么解决。网上看了很多,也请教过别人,都没有解决。

总的来说就是插不进去中文,可以读出中文。。
求赐教~~~~~~
------解决方案--------------------
http://blog.csdn.net/cuihuaming198809/article/details/8206960 看看能不能有帮助
------解决方案--------------------
我曾经也遇到这个问题,我用的是servlet,jsp,oracle,但加了过滤器后就好了,你看看是不是数据库、servlet、jsp的编码是不是一致
------解决方案--------------------
这个问题我们普科国际的老师昨天刚刚讲过,你设置的只能是某个子页面,或者说只能是适合于页面是get提交方式的时候不乱码,要想所有的页面中在表单提交后不显示乱码,首先找到你的tomcat的安装路径E:\tools\apache-tomcat-6.0.18\conf,在这个conf文件夹下有个server.xml,将配置端口号的地方多添上最后一句话<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" useBodyEncodingForURI="true"/>
之后,去写过滤器,
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOExceptionServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);//继续执行之前的请求操作
}
最后去项目的web.xml中将过滤器配置一下

<filter>
   <filter-name>SetCharacterEncodingFilter</filter-name>
   <filter-class>com.pk.myxjgs.web.filter.SetCharacterEncodingFilter</filter-class>
   </filter>
  
  <filter-mapping>
   <filter-name>SetCharacterEncodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
这样配置的目的是让你的过滤器在你选定的范围内起作用,去试试吧
------解决方案--------------------
首先LZ输出下面这段看看自己到底是什么编码格式
System.out.println("编码格式为:"+java.nio.charset.Charset.defaultCharset());

如果不是UTF-8 
你打开我的电脑-高级-环境变量-系统变量 设置一下 
变量名:JAVA_TOOL_OPTIONS 
变量值:-Dfile.encoding=UTF-8 
变量值可根据你的编码改变你计算机的根本编码格式
------解决方案--------------------
字符集过滤器
------解决方案--------------------
加个过滤器就好了 还有 查看你的数据库的编码集 看看是不是 UTF-8 有课能你在配置的时候没有选对。不行的时候 可以先把数据导出来。重装数据库(普科科普)
------解决方案--------------------
在服务器的server.xml加上字符编码。
<Connector port="8000" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" useBodyEncodingForURI="true"/>
------解决方案--------------------
跟数据库之间的乱码问题,必须在连接数据库的URL里指定字符编码:
,假如是MYSQL,URL写成下面的格式:
jdbc:mysql://hostname[:port]/dbname?characterEncoding=utf-8
------解决方案--------------------
你试试把Tomcat的server.xml改一下字符集。如果真的是jsp-action有乱码的话,应该可以解决。