これは、要求および/または応答のエンコーディングがまったく適切に設定されていない場合に発生する可能性があります。
GETリクエストの場合、servletcontainerレベルで設定する必要があります。どちらを使用しているかは不明ですが、たとえば、Tomcatはその要素のURIEncoding
属性によって実行されます。<Connector>
/conf/server.xml
<Connector ... URIEncoding="UTF-8">
POSTリクエストの場合、これらすべてのPOSTリクエストをカバーする目的のURLパターンにマップされるフィルターを作成する必要があります。例*.jsp
または/*
。で次の仕事をしてくださいdoFilter()
:
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
送信されたHTMLフォーム入力値のHTML応答およびクライアント側エンコーディングの場合、JSPページエンコーディングを設定する必要があります。これをJSPの先頭に追加します(UTF-8ストレートフォームDBの表示が正常に機能することを考えると、おそらくすでに適切に実行されています)。
<%@page pageEncoding="UTF-8" %>
または、これをすべてのJSPにコピーして貼り付けないようにするには、次のコマンドで1回設定しますweb.xml
。
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
ソースコードファイルとstdout(IDEコンソール)の場合、IDEワークスペースのエンコーディングを設定する必要があります。どちらを使用しているかは不明ですが、たとえばEclipseの場合、[ウィンドウ]>[設定]>[一般]>[ワークスペース]>[テキストファイルエンコーディング]をUTF-8に設定して実行します。

ページがHTTP経由で提供される場合、HTML<meta http-equiv>
タグは無視されることに注意してください。これは、ページがローカルディスクファイルシステムから。を介して開かれる場合にのみ考慮されますfile://
。また<form accept-charset>
、フォームでHTMLページを提供するときに使用される応答エンコーディングがデフォルトで設定されているため、指定する必要はありません。W3HTML仕様も参照してください。
参照: