文字化けの原因
ソースコーディングがターゲットエンコーディングと矛盾している。中国のウィンドウシステムのデフォルトのエンコードGBK、プログラマの数に害を与えます。
歪みを最小限に抑えるために、私は個人的に5ヤードの団結、IDE(Eclipseの/アイデア)、ページ(JSP /他のテンプレートエンジン)、アプリケーションサーバ(Tomcatの、など)、ソースコード(Javaソースコードファイルおよびその周辺地域)、データベースを実行するためにと考えてコーディング。
EclipseはUTF-8に設定されています
eclipse.iniを開いたEclipseのインストールディレクトリは、ほとんどの最後に行を追加します。
-Dfile.encoding=UTF-8
修正が完了したら、Eclipseを再起動することができます。
JSPページのエンコーディング
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
Tomcatのコーディング
下のTomcatのインストールディレクトリを開き bin\setenv.bat
、それを作成し、通常は存在しないファイルは、以下を追加します
set JAVA_OPTS=-Dfile.encoding=UTF-8
オープンはconf\server.xml
、8080にはURIEncodingを追加するコネクタのノードが属しているポートは、問題の中国の文字化けGETリクエストのほとんどを解決することができます
URIEncoding="UTF-8"
ソースコード
通常は、エンコードされたファイル自体、ときに、新しいファイル、IDE、またはプロジェクトのエンコーディングに応じ。
もう一つの隠されたコードは、Javaソースファイルのアリをコンパイルするときに使用されるのmaven /エンコーディングです
次のようにMavenの設定があります
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
コーディングデータベース
他の4ヤードが解決した場合、そのほとんどの場合は、MySQLのエンコーディングの問題を発生の下で一般的に言えば、
4つのコーディングMySQLがあります
Server characterset: utf8 // 服务器字节集
Db characterset: utf8 // 当前数据集字节集
Client characterset: utf8 // 客户端字节集
Conn. characterset: utf8 // 当前连接的字节集
my.iniのmysqldセクションを変更し、サーバーのキャラクタ・セットを設定する最適なソリューションです
[mysqld]
character-set-server = utf8
しかし、既存のシステムのために、グローバルな変更のリスクが比較的大きい場合、構成JDBCURLを行うために、つまり、クライアントを解決することができます
jdbc:mysql://127.0.0.1/nutzdemo?useUnicode=true&characterEncoding=UTF-8
参考文献:
1. コーディングと文字化け (Wendalグレート神)