簡體   English   中英

將非英文字符的數據傳遞到Web服務器

[英]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()調用之前調用此方法

並根據需要更改編碼

你也可以參考這個

HttpServletRequest-setCharacterEncoding似乎無濟於事

request.getQueryString()似乎需要一些編碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM