亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

如何避免JSP亂碼

2019-11-15 00:03:38
字體:
來源:轉載
供稿:網友
如何避免jsp亂碼如何解決javaWeb亂碼問題

作為一個合格的web開發人員應該是什么問題都遇到過的,尤其是亂碼問題。大家也許都體會到了,我們中國人學編程,很大的一個不便就是程序的編碼問題,無論學習什么技術,我們都需要探討他的編碼問題。

今天來講一下關于解決javaweb亂碼出現的原因與解決辦法,歡迎大家交流指正。

首先,先明確兩個問題,為什么會出現亂碼?我們在編寫web應用時什么時候會出現亂碼?

第一個問題:很多初學者會發現,我們在自己的客戶機上編寫的web應用程序時,明明是正常的漢字,但是發布到服務器上訪問的時候瀏覽器就會看到亂碼。

出現這種問題的原因是:通常中文windows系統中系統默認的編碼是GBK(大家可以進入DOS窗口下,輸入chcp進行查詢),而我們編寫web應用時,myeclipse默認的編碼通常是iso8859-1,瀏覽器也會有自己的編碼選擇。。。這么多地方使用的不同編碼,如果兩個編碼不對口,當然就會出現亂碼。

第二個問題:出現亂碼的地方可以歸結為三類:1.基本jsp頁面顯示亂碼,2.表單提交亂碼,3.數據庫亂碼

下面為大家依次講解:

1.基本jsp頁面顯示亂碼

這種情況比較簡一般只有初學者會出現,原因是因為jsp頁面保存,轉換時的編碼與瀏覽器解析的編碼不一樣。這里涉及到三個解決方案

1).<%@pagelanguage="java"pageEncoding="UTF-8"%> 我們都知道,jsp就是servlet,jsp會轉換成servlet之后轉換為相關的java代碼再發給客戶端。

那么jsp中就需要有語句可以控制jsp是以什么編碼轉換為servlet的。上述編碼就是控制,jsp以UTF-8的編碼方式保存,也就是說以UTF-8的編碼方式轉換成servlet。

2).<%@pagecontentType="text/html;charset=UTF-8"%> 熟悉HTTP協議的朋友都不陌生這一句代碼,charset="UTF-8",就是設置響應頭編碼方式為UTF-8。

3).<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> 同上一句代碼,只不過這一句使用HTML控制瀏覽器解析方式。

示例:

我們在一個簡單的jsp頁面中寫下這樣的代碼,頁面中有漢字,卻默認pageEncoding="iso8859-1"

復制代碼
<%@ page language="java" import="java.util.*" pageEncoding="iso8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>My JSP 'index.jsp' starting page</title>  </head>  <body>        <form action="encoding.jsp" method="get">            username:<input type="text" name="name" /><br>            性別:<input type="text" name="sex" /><br>            <input type="submit" value="submit" />        </form>  </body></html>
復制代碼

頁面顯示:

HTTP報文請求頭:

大家只要按照上述修改響應時的默認編碼即可。

2.表單提交亂碼

我們在使用表單提交中文時也會出現亂碼,原因就是Tomcat服務器內部編碼默認是iso8859-1,Tomcat會以編碼的缺省方式利用iso8859-1來解析中文。

表單get方式提交時,服務器會用默認的編碼對提交的數據進行解析,并添加到url后面傳到下一個頁面。

解決方法:在Tomcat 服務器的server.xml文件中進行配置,在Connector節點中加入useBodyEncodingForURI="true" URIEncoding=”UTF-8”,這樣接收頁面就會利用UTF-8進行解碼了。

表單post方式提交時,提交的數據不再加入到url中,我們可以在web應用中添加一個servlet過濾器來設置編碼統一(servlet過濾器會在訪問設置的相關url之前執行)。

過濾器相關代碼:

復制代碼
public class ConvertEncoding implements Filter {    PRivate String encoding;    @Override    public void destroy() {    }    @Override    public void doFilter(ServletRequest req, ServletResponse resp,            FilterChain chain) throws IOException, ServletException {        req.setCharacterEncoding(encoding);//設置請求編碼        resp.setContentType("text/html;charset="+encoding);//設置響應編碼        chain.doFilter(req,resp);    }    @Override    public void init(FilterConfig config) throws ServletException {        this.encoding = config.getInitParameter("encoding");//讀取默認編碼    }}
復制代碼

相關配置web.xml:

復制代碼
<filter>        <filter-name>Encoding</filter-name>        <filter-class>Filters.ConvertEncoding</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>
復制代碼

這樣我們會發現即使是post方式提交的數據,也不會出現亂碼情況。、

3.數據庫亂碼

對于大多數數據庫的JDBC驅動程序,在Java程序和數據庫之間傳遞數據都是以ISO8859-1為默認編碼格式,所以,在程序中向數據庫存儲包含中 文的數據時,驅動程序受限把程序內部Unicode編碼格式的數據轉換為ISO8859-1編碼,然后傳遞到數據庫中,如果要解決數據庫亂碼問題,最簡單的就是更改數據庫默認編碼格式。

后記:

關于UTF-8編碼:UTF-8編碼在寫的時候要規范一律寫為大寫(在MySQL數據庫中需要使用別名utf8)。編碼的書寫格式在windows下一律是部分大小寫的,但是有的ide是嚴格區分大小寫的,有些朋友可能遇見過ide告訴你 utf-8和UTF-8 不一樣的情況,說起來感覺很費解,編碼格式的解析是分大小寫的,所以大家在寫編碼時一定要規范來寫。


上一篇:了解一下jsp

下一篇:用JSP實現動態交互

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕综合一区| 欧美成人免费播放| 日韩有码在线观看| 日本久久久久久| 久久九九全国免费精品观看| 国产成人精品视频在线| 国产极品精品在线观看| 国产又爽又黄的激情精品视频| 欧美视频第一页| 欧美日韩爱爱视频| 亚洲国产天堂网精品网站| 欧美精品18videos性欧美| 国产精品亚洲片夜色在线| 色偷偷偷综合中文字幕;dd| 亚洲欧美在线第一页| 欧美福利在线观看| 国产精品r级在线| 亚洲男人第一av网站| 精品久久久久久久中文字幕| 亚洲xxxx做受欧美| 精品国偷自产在线| 国产精品电影在线观看| 中文字幕自拍vr一区二区三区| 成人h片在线播放免费网站| 97精品视频在线观看| 91中文精品字幕在线视频| 精品国产91久久久久久| 日韩美女福利视频| 亚洲第一国产精品| 久久高清视频免费| 亚洲桃花岛网站| 亚洲精品aⅴ中文字幕乱码| 亚洲男人天天操| 国产精品pans私拍| 欧美又大又粗又长| 91九色国产视频| 国产精品亚洲片夜色在线| 色诱女教师一区二区三区| 久操成人在线视频| 国产日韩av在线播放| 精品国产91久久久久久老师| 欧美大片在线看| 欧美激情综合亚洲一二区| 日韩免费看的电影电视剧大全| 欧美另类暴力丝袜| 亚洲一区二区久久久久久久| 国产精品99蜜臀久久不卡二区| 日韩精品在线免费播放| 亚洲欧美日韩区| 精品国产91久久久久久老师| 午夜剧场成人观在线视频免费观看| 精品久久久一区二区| 成人444kkkk在线观看| 国产日产久久高清欧美一区| 国产91精品高潮白浆喷水| 国产精品久久久久秋霞鲁丝| www.欧美精品| 奇米四色中文综合久久| 色偷偷av亚洲男人的天堂| 91精品啪aⅴ在线观看国产| 久久视频在线视频| 亚洲综合一区二区不卡| 亚洲新声在线观看| 日韩精品高清在线| 国产一区二区美女视频| 隔壁老王国产在线精品| 日韩最新av在线| 亚洲专区国产精品| 日本一区二区在线免费播放| 精品成人国产在线观看男人呻吟| 欧美贵妇videos办公室| 91成人在线播放| 国产精品91久久久久久| 亚洲人成伊人成综合网久久久| 91精品国产91久久久久福利| 91欧美激情另类亚洲| 日韩av在线免费| 国产精品麻豆va在线播放| 国产日韩av在线播放| 欧美黄色成人网| 久久视频在线免费观看| 国产精品激情av电影在线观看| 色偷偷av一区二区三区乱| 欧美成人免费在线视频| 欧美精品亚州精品| 亚洲色图五月天| 日韩在线观看免费网站| 91精品久久久久久久久久久久久| 日韩av中文字幕在线| 国产精品99久久99久久久二8| 亚洲精品美女在线观看播放| 亚洲第一网站男人都懂| 国产欧美日韩亚洲精品| 国产97在线观看| 亚洲一区二区三区乱码aⅴ| 秋霞av国产精品一区| 精品久久久一区二区| 国产精品久久久久久久久久尿| 欧美日韩在线观看视频小说| 亚洲a级在线播放观看| 欧美www在线| 亚洲成人av资源网| 91手机视频在线观看| 国产视频丨精品|在线观看| 国产视频观看一区| 欧美国产中文字幕| 亚洲综合中文字幕68页| 欧美极品欧美精品欧美视频| 91日本在线观看| 久久99热精品这里久久精品| 国产精品激情自拍| 色樱桃影院亚洲精品影院| 亚洲无限av看| 欧美性在线视频| 青草热久免费精品视频| 日韩大片免费观看视频播放| 欧美性xxxx极品hd欧美风情| 久久久久久欧美| 清纯唯美日韩制服另类| 姬川优奈aav一区二区| 亚洲色图17p| 欧美性xxxxhd| 国产精品69久久久久| 97久久精品人人澡人人爽缅北| 青青久久av北条麻妃黑人| 国产一区二区三区在线播放免费观看| 美女福利视频一区| 在线观看精品国产视频| 亚洲免费小视频| 日韩精品极品在线观看播放免费视频| 亚州精品天堂中文字幕| 欧美日韩国产第一页| 欧美老少配视频| 亚洲精品国产精品国产自| 91亚洲国产精品| 久久久久久久一区二区三区| 成人精品久久久| 国模精品视频一区二区三区| 91产国在线观看动作片喷水| 精品在线欧美视频| 亚洲精品91美女久久久久久久| 亚洲国产成人爱av在线播放| 久热精品视频在线免费观看| 伊人久久久久久久久久| 久久亚洲精品成人| 亚洲男人av电影| 久久精品国产99国产精品澳门| 国产日本欧美在线观看| 久久av.com| 欧美一级片在线播放| 欧美高清自拍一区| 91精品国产综合久久香蕉922| 亚洲欧美激情另类校园| 中文字幕精品久久久久| 国产精品91一区| 国产脚交av在线一区二区| 国产91精品视频在线观看| 国产精品人成电影| 中文字幕日韩高清| 久久久综合av| 亚洲欧洲午夜一线一品| 日韩一级裸体免费视频| 亚洲激情视频网站| 亚洲开心激情网|