私のMacキーボードはx-mac-roman文字セットをTomcatに送信します。ブラウザまたはTomcatにMacで入力した内容を何らかの方法で理解させる方法はありますか?
3 に答える
各コンポーネントがすべての段階で同じ文字セットを使用していることを確認する必要があります。
Tomcatに特定の文字エンコードを使用させるには、コネクタにURIEncodingを設定する必要があります。この場合、おそらくURIEncoding="x-MacRoman"が必要です。
これも便利です:http ://wiki.apache.org/tomcat/FAQ/CharacterEncoding
代わりにUTF-8を使用してください。これは、すべての自尊心のあるクライアント側およびサーバー側のオペレーティングシステムプラットフォームによって理解されています。最近では、標準の文字エンコードとも見なされています。Tomcatは、GET要求パラメーターのデコードに関しては古いISO 8859-1文字セットにデフォルト設定され、POST要求パラメーターのデコードに関してはサーバープラットフォームのデフォルトエンコードにデフォルト設定されます。
GETリクエストのエンコーディングを設定するには、Tomcatの/conf/server.xml
次の場所で目的のHTTPコネクタを編集します。
<Connector ... URIEncoding="UTF-8">
POSTリクエストのエンコーディングを設定するには、基本的にメソッドで次のことを行うサーブレットフィルタを作成し、またはdoFilter()
などのすべてのPOSTリクエストに一致するURLパターンにマッピングします。*.jsp
/*
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
応答の生成時に指定されたエンコーディングを使用するようにJSPに指示するには(JSPファイルをまったく同じエンコーディングを使用して保存する必要があります)、これにより、クライアントにUTF-8を使用して応答を解釈し、後続のリクエストでは、すべてのJSPの上に次のように設定します。
<%@page pageEncoding="UTF-8"%>
または、webappに次の構成エントリを設定してweb.xml
、すべてのJSPに適用されるようにします。
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
データベースを使用する場合は、データベースにも適切なエンコーディングを設定することを忘れないでください。
参照:
問題はPOSTリクエストに関連していました。Tomcatはそれらに適していません。修正:すべてのリクエストにこのフィルターを追加します:http ://wiki.apache.org/cocoon/SetCharacterEncodingFilter
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>