第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將Unicode字符作為JSP/Servlet請求程序傳遞?

如何將Unicode字符作為JSP/Servlet請求程序傳遞?

胡子哥哥 2019-06-24 13:24:55
如何將Unicode字符作為JSP/Servlet請求程序傳遞?經(jīng)過多次反復(fù)試驗,我仍然找不出這個問題。JSP、Servlet和數(shù)據(jù)庫都被設(shè)置為接受UTF-8編碼,但即使在任何有兩個字節(jié)字符(如em破折號)的情況下,只要我使用request.getParameter,它們都會被置亂為斷線字符。我已經(jīng)做了手動提交到數(shù)據(jù)庫,它能夠接受這些字符,沒有問題。如果我在servlet中從數(shù)據(jù)庫中提取文本并以jsp頁面的形式打印它,它就沒有問題。唯一次我發(fā)現(xiàn)它會以破碎字符的形式返回,那就是在使用request.getParameters檢索它之后,我嘗試在其他地方顯示它。還有其他人有這個問題嗎?我怎么才能修好它?
查看完整描述

3 回答

?
阿波羅的戰(zhàn)車

TA貢獻1862條經(jīng)驗 獲得超6個贊

我只想補充一點(當(dāng)然,對于POST方法來說)

request.setCharacterEncoding("UTF-8");

在讀取任何參數(shù)之前調(diào)用。以下是讀取參數(shù)的實現(xiàn)方式:

@Overridepublic?String?getParameter(String?name)?{
????if?(!parametersParsed)?{
????????parseParameters();
????}
????return?coyoteRequest.getParameters().getParameter(name);}

如你所見,有一面旗幟參數(shù)分析這是在第一次讀取任何參數(shù)時設(shè)置的,parseParameters()方法將解析所有請求的參數(shù)并設(shè)置編碼。呼叫:

request.setCharacterEncoding("UTF-8");

在對參數(shù)進行解析后,不會產(chǎn)生任何影響!這就是為什么有些人抱怨設(shè)置請求的編碼不起作用。這里的大多數(shù)答案都建議使用servlet過濾器并在那里設(shè)置字符編碼。這是正確的,但也要注意,一些安全庫可以在篩選器之前讀取請求參數(shù)(這是我的情況),因此如果在此之后執(zhí)行篩選器,則請求參數(shù)的字符編碼已經(jīng)設(shè)置,設(shè)置UTF-8或任何其他參數(shù)都不會產(chǎn)生任何效果。


查看完整回答
反對 回復(fù) 2019-06-24
?
明月笑刀無情

TA貢獻1828條經(jīng)驗 獲得超4個贊

如果根本沒有正確設(shè)置請求和/或響應(yīng)編碼,就會發(fā)生這種情況。

對于GET請求,需要在servlet容器級別配置它。目前還不清楚您使用的是哪一種,但例如Tomcat,這是由URIEncoding屬性<Connector>元素/conf/server.xml.

<Connector?...?URIEncoding="UTF-8">

對于POST請求,您需要創(chuàng)建一個濾光器它被映射到所需的URL模式上,涵蓋所有這些POST請求。例如:*.jsp甚至/*..執(zhí)行以下工作doFilter():

request.setCharacterEncoding("UTF-8");chain.doFilter(request,?response);

對于提交的HTML表單輸入值的HTML響應(yīng)和客戶端編碼,您需要設(shè)置JSP頁面編碼。將其添加到JSP的頂部(考慮到顯示UTF-8直表格DB的效果很好,您可能已經(jīng)正確地完成了這一工作)。

<%@page?pageEncoding="UTF-8"?%>

或者,為了防止在每一個JSP上復(fù)制它,只需在web.xml:

<jsp-config>
????<jsp-property-group>
????????<url-pattern>*.jsp</url-pattern>
????????<page-encoding>UTF-8</page-encoding>
????</jsp-property-group></jsp-config>

對于源代碼文件和stdout(IDE控制臺),需要設(shè)置IDE工作區(qū)編碼。目前還不清楚您使用的是哪一種,但例如,Eclipse要通過設(shè)置窗口>首選項>通用>工作區(qū)>文本文件編碼去UTF-8。


請注意HTML<meta http-equiv>標簽是被忽視當(dāng)通過HTTP服務(wù)頁面時。只有當(dāng)頁面從本地磁盤文件系統(tǒng)打開時,才會考慮file://..還指定<form accept-charset>沒有必要,因為它已經(jīng)默認為在為表單服務(wù)HTML頁面時使用的響應(yīng)編碼。


查看完整回答
反對 回復(fù) 2019-06-24
  • 3 回答
  • 0 關(guān)注
  • 453 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號