TomcatUTF-8対応にする
1. 序章
UTF-8は、Webアプリケーションで使用される最も一般的な文字エンコードです。 中国語、韓国語、日本語など、現在世界で話されているすべての言語をサポートしています。
この記事では、TomcatでUTF-8を確保するために必要なすべての構成を示します。
2. コネクタ構成
コネクタは、特定のポートで接続をリッスンします。 すべてのコネクタがUTF-8を使用してリクエストをエンコードしていることを確認する必要があります。
パラメータURIEncoding=” UTF-8”をTOMCAT_ROOT / conf /server.xmlのすべてのコネクタに追加しましょう。
<Connector
URIEncoding="UTF-8"
port="8080"
redirectPort="8443"
connectionTimeout="20000"
protocol="HTTP/1.1"/>
<Connector
URIEncoding="UTF-8"
port="8009"
redirectPort="8443"
protocol="AJP/1.3"/>
3. 文字セットフィルター
コネクタを構成したら、WebアプリケーションにUTF-8のすべての要求と応答を処理させるようにします。
CharacterSetFilterという名前のクラスを定義しましょう。
public class CharacterSetFilter implements Filter {
// ...
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain next) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
next.doFilter(request, response);
}
// ...
}
すべてのリクエストとレスポンスに適用されるように、アプリケーションのweb.xmlにフィルターを追加する必要があります。
<filter>
<filter-name>CharacterSetFilter</filter-name>
<filter-class>com.baeldung.CharacterSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterSetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4. サーバーページのエンコーディング
構成する必要のあるWebアプリケーションの他の部分は、Javaサーバーページです。
サーバーページでUTF-8を確保する最善の方法は、各JSPページの上部に次のタグを追加することです:
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
5. HTMLページのエンコーディング
サーバーページエンコーディングはJVMにページ文字の処理方法を指示しますが、HTMLページエンコーディングはブラウザにページ文字の処理方法を指示します。
これを追加する必要がありますのタグ頭すべてのHTMLページのセクション:
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
6. MySQLサーバーの構成
これでTomcatが構成されたので、データベースを構成します。
MySQLサーバーが使用されていることを前提としています。 構成ファイルの名前は、Windowsでは my.ini 、Linuxではmy.cnfです。
構成ファイルを見つけ、これらのパラメーターを検索し、それに応じて編集する必要があります。
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
変更を有効にするには、MySQLサーバーを再起動する必要があります。
7. MySQLデータベース構成
MySQLサーバーの文字セット構成は、新しいデータベースにのみ適用されます。 古いものを手動で移行する必要があります。 これは、いくつかのコマンドを使用して簡単に実現できます。
データベースごとに:
ALTER DATABASE database_name CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
各テーブルについて:
ALTER TABLE table_name CONVERT TO
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
VARCHARまたはTEXT列ごとに:
ALTER TABLE table_name CHANGE column_name column_name
VARCHAR(69) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
データベースクエリでUTF-8文字を使用してデータを渡す場合は、確立されたデータベース接続がUTF-8エンコーディングに準拠していることを確認する必要があります。
JDBCベースの接続の場合、これは次の接続URLで実現できます。
jdbc:mysql://localhost:3306/?useUnicode=yes;characterEncoding=UTF-8
8. 結論
この記事では、TomcatがUTF-8エンコーディングを使用するようにする方法を示しました。