以下に、文字化けに対する 4 つの異なる解決策を示します。基本的に、Web 開発で文字化けが発生するさまざまな状況をカバーしています。
コード化けの解決策は主に java+mysql 開発環境向けに提案されており、対応する修正を加えれば、さまざまな言語環境でのコード化けの問題を解決するために使用できます。
1. JSPページで文字化けが表示される
次の表示ページ (display.jsp) が文字化けして表示されます:
プログラム コード
<html>
<頭>
<title>JSP の中国語処理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%
out.print("JSP中国語処理");
%>
</body>
</html>
WEBサーバーやJDKのバージョンが異なると処理結果が異なります。理由: サーバーで使用されるエンコード方式が異なるため、ブラウザーでは文字ごとに異なる結果が表示されます。解決策: JSP ページでエンコード方式 (gb2312) を指定します。つまり、ページの最初の行に <%@ page contentType="text/html; charset=gb2312"%> を追加して、文字化けを解消します。完全なページは次のとおりです。
<%@ ページ contentType="text/html; charset=gb2312"%>
<html>
<頭>
<title>JSP の中国語処理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%
out.print("JSP中国語処理");
%>
</body>
</html>
2. 中国語でフォームを送信すると文字化けが発生する 以下は、次のコードを含む送信ページ (submit.jsp) です。
プログラム コード。
<html>
<頭>
<title>JSP の中国語処理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="process.jsp">
<div align="center">
<input type="text" name="name">
<input type="submit" name="submit" value="submit">
</div>
</form>
</body>
</html>
以下は処理ページ (process.jsp) コードです。
プログラム コード
<%@ ページ contentType="text/html; charset=gb2312"%>
<html>
<頭>
<title>JSP の中国語処理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%=request.getParameter("name")%>
</body>
</html>
submit.jsp でサブミットした英語の文字は正しく表示できますが、中国語の文字をサブミットすると文字化けが発生します。理由: ブラウザーはデフォルトで UTF-8 エンコードを使用してリクエストを送信します。UTF-8 と GB2312 エンコード方式では文字の表現方法が異なるため、文字を認識できません。解決策: request.seCharacterEncoding("gb2312") を通じてリクエストを均一にエンコードして、中国語の通常の表示を実現します。変更された process.jsp コードは次のとおりです。
プログラム コード
<%@ ページ contentType="text/html; charset=gb2312"%>
<%
request.seCharacterEncoding("gb2312");
%>
<html>
<頭>
<title>JSP の中国語処理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%=request.getParameter("name")%>
</body>
</html>
3. データベース接続が文字化けします。
中国語に関連するすべてが文字化けする限り、解決策はデータベースのデータベース URL に useUnicode=true&characterEncoding=GBK を追加することで問題ありません。
4.データベースの表示が文字化けする
mysql4.1.0 では、varchar 型と text 型で中国語の文字化けが発生します。varchar 型については、バイナリ属性として設定することで中国語の問題を解決できます。text 型については、エンコード変換クラスを使用して処理する必要があります。実装は次のとおりです:
プログラムコード
パブリック クラス Convert {
/** ISO-8859-1 コードを GB2312 に変換します
*/
public static String ISOtoGB(String iso){
文字列gb;
試す{
if(iso.equals("") || iso == null){
戻る "";
}
それ以外{
iso = iso.trim();
gb = 新しい文字列(iso.getBytes("ISO-8859-1"),"GB2312");
GBを返します。
}
}
catch(例外 e){
System.err.print("エンコード変換エラー:"+e.getMessage());
戻る "";
}
}
}
これをクラスにコンパイルすると、Convert クラスの静的メソッド ISOtoGB() を呼び出してエンコーディングを変換できます。