[英]Pass data of non english character to web server
從html,我正在使用非英文字符的數據到控制器。 例如)在URL中傳遞多章字節作為發布請求。
但是在控制器中數據接收為
多字節
誰能幫我解決此問題?
首先,您需要告訴瀏覽器您正在提供UTF-8內容,並希望UTF-8提交。 您可以通過將行放置在JSP的最頂部來完成此操作,
<%@page pageEncoding="UTF-8" %>
或通過將以下條目添加到web.xml
從而無需在所有JSP上重復@page
:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
然后,您需要告訴Servlet API使用UTF-8解析POST請求參數。 您可以通過創建一個Servlet過濾器來做到這一點,該過濾器基本上執行以下操作:
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding("UTF-8");
chain.doFilter(req, res);
}
// ...
}
就這樣。 你不需要 <form accept-charset>
(將使用MSIE瀏覽器的時候更糟糕),你不一定需要<meta http-equiv="content-type">
即只有當頁面是從本地供應解釋磁盤文件系統,而不是通過HTTP)。
請注意,當您使用System.out.println()
或記錄器來驗證提交的值時,還應將其配置為使用UTF-8呈現字符,否則您仍然會誤導與Mojibake一起出現 。
您可以在操作方法中使用它
request.setCharacterEncoding("UTF-8");
必須在任何request.getParameter()
調用之前調用此方法
並根據需要更改編碼
你也可以參考這個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.