溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

幾種常見(jiàn)的java亂碼情況的解決方法

發(fā)布時(shí)間:2020-06-16 10:20:03 來(lái)源:億速云 閱讀:161 作者:Leah 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)幾種常見(jiàn)的java亂碼情況的解決方法,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲。

1、在Servlet中獲得通過(guò)get方式傳遞到服務(wù)器的數(shù)據(jù)時(shí)出現(xiàn)亂碼;

 public class RegistServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String name = req.getParameter("userName");
        byte[] bytes = name.getBytes("ISO8859-1");
        String newName = new String(bytes,"UTF-8");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }
}

解析:在doGet方法中定義一個(gè)name變量獲得封裝在服務(wù)器的客戶端數(shù)據(jù)userName,然后將name以“ISO8859-1”的方式賦值給字節(jié)數(shù)組bytes,最后將此bytes數(shù)組以UTF-8的方式賦值給一個(gè)新創(chuàng)建的String變量newName,此時(shí)newName就是能正常顯示的數(shù)據(jù),之所以這么麻煩,是因?yàn)闆](méi)有直接的辦法一行代碼解決,可以就當(dāng)此方法為固定用法。

2、在Servlet中獲得通過(guò)post方式傳遞到服務(wù)器的數(shù)據(jù)時(shí)出現(xiàn)亂碼;

public class RegistServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //注意:post方式提交數(shù)據(jù)的亂碼解決方式,放在getParameXXX方法之前
        req.setCharacterEncoding("UTF-8");
        //得到前臺(tái)input框中name="username"和password="password"的value值
        String username = req.getParameter("username");
        String password = req.getParameter("password");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }
}

解析:post傳遞方式下解決亂碼問(wèn)題很簡(jiǎn)單,就req.setCharacterEncoding(“UTF-8”); 這一行代碼,但需注意,要將這句話放在獲取數(shù)據(jù)之前。

3、Servlet通過(guò)服務(wù)器將數(shù)據(jù)響應(yīng)到客戶端時(shí)出現(xiàn)亂碼;

public class RegistServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //方式一:
        resp.setContentType("text/html;charset=utf-8");
        //方式二:
        resp.setHeader("Content-type", "text/html");
        resp.setCharacterEncoding("UTF-8");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }
}

解析:注意,以上兩種方法在應(yīng)用時(shí)要寫(xiě)在輸出方法之前,另外,兩種方式效果一樣,因?yàn)榉绞揭惠^簡(jiǎn)潔,常用方式一。

4、HTML或JSP頁(yè)面在客戶端展示時(shí)出現(xiàn)的亂碼情況。

<head>
        <meta charset="UTF-8">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <title>form表單</title>
</head>

以上就是幾種常見(jiàn)的java亂碼情況的解決方法了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI