国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

servlet 的亂碼問題

2019-11-11 03:17:35
字體:
來源:轉載
供稿:網友

web開發(fā)中經常會遇到 亂碼的問題,這是再正常不過的了。 首先我們要清楚為什么會亂碼? 根本原因是 字符集的不統(tǒng)一。 目前常用的字符集有 gb2312 , gb18030 iso-8859-1 bgk utf-8 。 你的應用服務器 默認的字符集,瀏覽器默認的字符集,數(shù)據(jù)庫的字符集,任何一個環(huán)節(jié)的不統(tǒng)一,都會造成亂碼。現(xiàn)在我們知道了原因,也就有了解決的方案。 統(tǒng)一我們的字符。 什么?你要這世界上只保留一種字符集? 同學,互聯(lián)網是開放包容的,就讓我們多干些苦力,來解決這些兼容問題。

字符集有大有小,推薦使用 utf-8 的字符集,也可以做些字符轉換。

來看看我們具體在寫代碼的時候,如何解決 亂碼問題。

1.在 html 頁首

<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

2.可以看到我設置兩個 編碼。 charset : 表示響應的時候。 pageEncoding:請求的時候。(動作我們整體來分為兩個時間段: 請求和響應)

在servlet 里,每一次請求和響應 的時候,都要設置字符

response

response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8");

request

request.setCharacterEncoding("UTF-8");

3.數(shù)據(jù)庫的字符集也要保證統(tǒng)一

大致的思路就是這樣。 第二步 又有很多種變種。

上面的第二種方法,只是一個思路,如果在實際開發(fā)的時候,在每次請求和響應都去手動設置開發(fā)效率太低。 我們有兩種方法:

配置servlet容器 使用過濾器

1.配置servlet容器 使用的應用服務器是apache tomcat 也是servlet的容器 在tomcat的server.xml文件里面

<Connector connectionTimeout="20000" port="8080" 這種辦法的缺點是,修改的是應用服務器,如果項目移植到其他的服務器,兼容性問題(你可以修改 servel.xml 但是如果服務器下不止一個應用呢?) 2.過濾器 filter

首先要明白過濾器: 會對 請求預處理 在響應后 動作。 我們讓過濾器幫我們干完上面的苦力活。

來看看 spring 字符編碼過濾器 是如何處理的。

在web.xml 配置

<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

實現(xiàn)類 的實現(xiàn)方法:

@Override protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) { request.setCharacterEncoding(this.encoding); if (this.forceEncoding) { response.setCharacterEncoding(this.encoding); } } filterChain.doFilter(request, response); }

可以看到上面代碼。使用過濾器 幫我們把重復的活干完了。

附一鏈接 博主有畫圖 理解 亂碼產生的原因。 http://blog.csdn.net/xiazdong/article/details/7217022


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 吐鲁番市| 柳林县| 辽阳县| 白山市| 怀仁县| 长白| 洱源县| 乐亭县| 临潭县| 凌海市| 星子县| 德兴市| 顺昌县| 通许县| 吉安县| 巨野县| 五莲县| 湘潭县| 青河县| 沙坪坝区| 绥江县| 莆田市| 观塘区| 淮北市| 儋州市| 扶绥县| 于田县| 廊坊市| 株洲市| 墨竹工卡县| 新安县| 崇州市| 中西区| 湖北省| 新民市| 洛扎县| 依安县| 日喀则市| 寿阳县| 武夷山市| 特克斯县|