`

字符集和编码乱码解决方案(转)

阅读更多

中文乱码:在以后学习过程中全部采用UTF-8 
1、文件的乱码 
1.1、项目文本文件默认编码: 
       【右击项目】->【Properties】->【Resource】->【Text file encoding】     

1.2、文件默认编码:默认使用项目的默认编码 
     【右击文件】->【Properties】->【Resource】->【Text file encoding】 
1.3、 JSP 文件编码:由于 JSP 要翻译为 Servlet 
1.3.1、JSP文件编码: 
     【右击文件】->【Properties】->【Resource】->【Text file encoding】 
1.3.2、JSP翻译为Servlet时的编码: 
   <%@ page language="java" pageEncoding="utf-8"%> 
中文乱码:在以后学习过程中全部采用UTF-8 


2、浏览器和服务器间传输数据的乱码 
2.1、 浏览器端 编码,一般由服务器端告诉浏览器如何解码数据: 
2.1.1、Servlet 
          response.setContentType("text/html; charset=UTF-8"); 
        或者  response.setCharacterEncoding(“UTF-8”); 
   2.1.2、JSP 
         <%@ page language="java" contentType="text/html; charset=utf-8" %> 
   2.1.3、通用 
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

注:浏览器编码可以由我们手工修改,但最后不要这样,一般让浏览器自动选择即可。 
中文乱码:在以后学习过程中全部采用UTF-8 
2、浏览器和服务器间传输数据的乱码 

2.2、 服务器端 编码,将客户端传过来的数据进行解码: 
      浏览器默认使用ISO-8859-1进行编码数据,然后将数据传输到服务器,因此我们默认只需要将浏览器发送过来的数据转换为我们需要的编码即可。 
2.2.1、最简单方式: 

Java代码   收藏代码
  1. String username = request.getParameter(“username”);  
  2. username = new String(username.getBytes("ISO-8859-1“), "UTF-8");  


2.2.2、比较好的解决方案 
      // 必须 在获取参数之前,调用如下方法先解码 
       request.setCharacterEncoding(“UTF-8”); 
      String username = request.getParameter(“username”); 
2.4、比较通用方案:在一个Filter中更改所有请求的编码方式: 
    1、在src中添加filter来设置编码格式是中文,filter类可以在tomcat的包里面:apache-tomcat-6.0.16.zip\apache-tomcat-6.0.16\webapps\examples\WEB-INF\classes\filters下面,SetCharacterEncodingFilter.java文件 

     2 、在 web.xml 中配置 filter ,具体配置如下页: 

Java代码   收藏代码
  1. <filter>  
  2.         <filter-name>Set Character Encoding</filter-name>  
  3.         <filter-class>filters.SetCharacterEncodingFilter</filter-class>  
  4.         <init-param><param-name>encoding</param-name>  
  5.         <param-value>utf-8</param-value></init-param>  
  6. </filter>  
  7. <filter-mapping>  
  8.         <filter-name>Set Character Encoding</filter-name>  
  9.         <url-pattern>/*</url-pattern>  
  10. </filter-mapping>  


2.5、 GET提交方式中文乱码解决 
通过修改request.setCharacterEncoding(“UTF-8”);只能解决POST提交方式的请求编码,对GET无效。 

     1 、最简单解决方案: 该解决方案不再需要任何额外配置(如filter) 
           TOMCAT默认ISO-8859-1 因此可以设置默认编码为UTF-8解决,在conf\server.xml文件中设置如下 
           

Java代码   收藏代码
  1. <Connector port="8080" protocol="HTTP/1.1"  
  2.                                connectionTimeout="20000"  
  3.                                redirectPort="8443" URIEncoding=”UTF-8”/>  


     2 、在 tomcat4 之后,可以通过如下配置来解决中文乱码,但必须配置 filter 
         在conf\server.xml文件中设置如下 
                  

Java代码   收藏代码
  1. <Connector port="8080" protocol="HTTP/1.1"  
  2.                                        connectionTimeout="20000"  
  3.                                        redirectPort="8443" useBodyEncodingForURI=“true”  />  


         然后request.setCharacterEncoding(“UTF-8”)也可解决GET乱码 

 

转贴自【http://sishuok.com/forum/posts/preList/306/428.html

分享到:
评论

相关推荐

    深入理解字符编码(字符集 字符编码 字符显示 乱码问题)

    文档中主要介绍了各类字符集以及相关的字符编码,字符的显示原理,从输入到显现的整个过程,程序中出现的乱码问题以及解决方案

    MySQL字符编码及乱码解决方案.txt

    MySQL字符编码及乱码解决方案 · 使用多种字符集来存储字符串 · 使用多种校对规则来比较字符串 · 在同一台服务器, 同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合字符串 · 允许定义任何级别...

    UE中文乱码解决方案

    解决ultraeditor打开中文文件出现乱码的情况

    sqlite数据库存取中文乱码的全部解决方案

    sqlite数据库存取中文乱码的全部解决方案(包括其它数据库oracle+sqlserver+mysql) 数据库的连接方式、数据库里存放数据的字体编码、所选编程语言的缺省字体编码。如果在编程中遇到不能正确显示中文时、、、、

    Linux系统中文乱码解决完整方案

    Linux中的中文文件在ssh终端中显示为乱码。原本在Windows中显示正常的文件,上传到Linux中之后,全变成乱码,有什么好的解决方法呢,经过本人多次实验,终于得到一个解决方法

    java中文乱码解决方案

    struts2中文乱码解决方法 1. 在struts2里面,最好将所有字符都设成utf-8。 ; charset=UTF-8"%&gt; &lt;%@ page pageEncoding="UTF-8" %&gt;1.1 在jsp页面设定字符编码。这边有必有说明的是如果是jsp+java bean+servlet的...

    MySQL字符集乱码及解决方案分享

    字符集是一套符号和编码的规则,不论是在oracle数据库还是在mysql数据库,都存在字符集的选择问题,而且如果在数据库创建阶段没有正确选择字符集,那么可能在后期需要更换字符集,而字符集的更换是代价比较高的操作...

    Docker容器中文乱码(修改docker容器编码格式)的解决方案

    前台上传文件到服务器后,服务器返回给前台的文件列表中出现中文乱码,所有的中文文件名全部变成?,英文文件名则正常显示。  问题经过定位,发现后台代码的multipartfile类在执行transterto的方法时就发生了此异常...

    做Java项目过程中遇到乱码问题的解决方案

    在做java项目(特别是web项目)的过程中,中文乱码一直是我们开发人员比较头疼的问题,因为涉及到编码,解码,字符集,以及国际化等诸多问题,所以在着手解决的时候也缺乏相关的知识。我花了一些时间自己动手实验了...

    在CMD中操作mysql数据库出现中文乱码解决方案

    网友中提到在mysql中关于客户端编码问题,只需在cmd里告诉mysql服务器我客户端这边编码和想要的结果集编码即可。 具体步骤: 1、win+r进入cmd,然后切到mysql安装目录的bin文件夹下(或者直接打开我的

    网页语言编码及asp乱码问题解决方案

    因为utf-8的字符集储存空间大于gb2312,当使用utf-8读取时,有些字符gb2312的编码中是不存在的,不存在的字符自然会出现乱码了。对于静态文件来说,如果文件的储存编码和网页中编码设置(charset)不一致的话,由于...

    Linux SecureCRT显示乱码解决方案

    2、设置字符集为GB2312后保存好后确认退出。 3、再次测试一下。 您可能感兴趣的文章:基于SecureCRT向远程Linux主机上传下载文件步骤图解浅谈ubuntu 使用securecrt vi编辑出现的问题SecureCRT中文显示乱码问题的...

    关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。 首先: 用show variables like “%colla%”;show varables like “%...

    MySQL5.x版本乱码问题解决方案

    MySQL5.x的版本中默认字符集是latin1也就是我们所知道的ISO-8859-1字符集,这个字符集编码并没有包含汉字,所以我们在使用的时候汉字会出现乱码情况,通过修改数据库默认字符集即可解决。 进入MySQL命令行: mysql...

    JDBC数据库操作乱码无缝过渡解决方案

    JDBC数据库操作乱码非主流解决方案---JDBC连接驱动代理 以驱动的方式提供给使用方,在底层实现连接的代理管理功能,向使用者隐藏 实现过程以及无缝的过渡 你需要了解下列参数: proxy.driver= (必须)实际要连接...

    pyftplib中文乱码问题解决方案

    这篇文章主要介绍了pyftplib中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 采用pyftpdlib启动ftp服务端,ftp客户端在上传文件的时候,...

    关于Apache默认编码错误 导致网站乱码的解决方案

    这样就出现问题了,Apache默认编码UTF-8在解析A网站的时候没有任何问题,当运行B网站时出现的”蝌蚪文”乱码问题。 单纯的修改Apache默认编码为gb2312这样就导致A网站出现”蝌蚪文”。 问题分析: 如果你在网上搜索...

    MySQL中文乱码问题解决方案

    1、linux 中 MySQL 出现中文乱码问题如下操作 编辑vi /etc/my.cnf 文件,添加图中标记三行 [client] default-character-set=utf8 ...查看表的设计表中的字符集 您可能感兴趣的文章:MySQL错误TIMESTAMP col

    Python request中文乱码问题解决方案

    Python request获取网页中文乱码问题 ... **r.text返回的是Unicode型的...大多数 unicode 字符集都能被无缝地解码。请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 r.text 之时,Reques

Global site tag (gtag.js) - Google Analytics