3

Grails アプリには次の構成があります。

  1. Grails 1.3.7
    config.groovy ファイルに以下を設定
    grails.views.default.codec="none"
    grails.views.gsp.encoding="UTF-8"
    grails.converters.encoding="UTF-8"

  2. Tomcat 7.0.22 Tomcat
    の server.xml ファイルに次のように設定します。
    URIEncoding="UTF-8" useBodyEncodingForURI="true"

そして、私の gsp ページではcharset=UTF-8"、UTF-8 文字エンコーディングを使用したいので設定しました。

次に、ユニコード文字を入力してフォームを送信し、コントローラーの関連するアクションでパラメーター ダンプをチェックすると、入力ボックスのいずれかで、ユニコード文字が文字化けします。Firebug を使用してサーバーへのブラウザー要求を確認すると、Unicode 文字が正しくエンコードされてサーバーに送信されていることがわかります。

それでも、もし私が sth をやったら。お気に入り params.unicodeInput = new String(params.unicodeInput.getBytes("8859_1"), "UTF8");

Unicode 文字は正しくデコードされます。ブラウザがユニコード文字を正しく送信しているにもかかわらず、通常のブラウザ要求でユニコード文字が正しくデコードされない理由を知りたいと思いました。

ありがとう!!

編集
同じ構成でデモアプリを作成しましたが、デモアプリではすべて問題ないようです。この問題は、この特定のアプリにのみ存在します。インストールされている他のプラグインが原因でしょうか?

そして両方を印刷するrequest.getCharacterEncoding()response.getCharacterEncoding()UTF-8になります。

4

1 に答える 1

4

よくわかりませんが、Grails + Tomcat で Unicode の問題が発生したときに、Tomcat の setenv.sh に次のパラメーターを追加して問題を解決しました。 JAVA_OPTS="-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"

于 2015-11-06T21:11:34.080 に答える