Java でのコード化けの問題に対するいくつかの解決策

リリース: 2019-12-21 15:53:48
オリジナル
2692 人が閲覧しました

Java でのコード化けの問題に対するいくつかの解決策

Java 文字化けの状況に対するいくつかの解決策:

1. get を通じてサーバーに渡されたデータがサーブレットで取得されるときに文字化けが表示されます;

 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 メソッドで name 変数を定義して、サーバーにカプセル化されたクライアント データ userName を取得し、その名前を「ISO8859-1」の形式でバイト配列 bytes に割り当て、最後にそのバイト配列を使用します。 UTF-8の形式 新しく作成したString変数newNameに値を代入します この時、newNameは正常に表示できるデータです なぜ面倒かというと、1行で直接解決する方法がないからですこのメソッドは、固定された使用法として考えることができます。

2. サーブレットのポストを通じてサーバーに渡されるデータを取得するときに文字化けが発生します;

public class RegistServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //注意:post方式提交数据的乱码解决方式,放在getParameXXX方法之前
        req.setCharacterEncoding("UTF-8");
        //得到前台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);
    }
}
ログイン後にコピー

分析: ポスト配信モードでの文字化けの問題の解決は非常に簡単で、req.setCharacterEncoding だけです。 ("UTF -8"); このコード行ですが、この文はデータを取得する前に配置する必要があることに注意してください。

3. サーブレットがサーバー経由でクライアントにデータを応答するときに文字化けが発生する;

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);
    }
}
ログイン後にコピー

分析: 上記 2 つのメソッドは、適用時に出力メソッドの前に記述する必要があることに注意してください。 2 つの方法 1 の方が簡単で一般的に使用されているため、どちらの方法でも効果は同じです。

4. クライアントでHTMLまたはJSPページを表示すると文字化けが発生します。

<head>
        <meta charset="UTF-8">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <title>form表单</title>
</head>
ログイン後にコピー

Java の知識をさらに深めたい場合は、java 基本チュートリアル 列に注目してください。

以上がJava でのコード化けの問題に対するいくつかの解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート