0

Grails (2.0.4) アプリケーションがあり、すべて UTF-8 エンコーディング (レイアウトのメタ タグ、mysql データベース テーブル) を管理するように設定されています。残念ながら、奇妙なことが起こります。

たとえば、(ドメイン インスタンスを作成するための) フォームに、次のように非英国文字を含むテキストを入力するとします。

más que nada

POST には正確なテキスト (「á」文字はそのまま) が含まれていますが、コントローラーの params 変数には間違ったテキストが含まれています。

más que nada

ビューとコントローラーの間には何もありません。どうしてこうなるのでしょうか?

また、良い結果が得られなかったので、Config.groovy に設定しようとしました。

grails.views.default.codec = "html"

設定するのに欠けているものは他にありますか?

この問題をご覧になるために時間を割いてくださるすべての方々に、前もって感謝します。

4

6 に答える 6

1

Config.groovy のこれらの値はどうですか:

grails.views.default.codec = "none"
grails.views.gsp.encoding = "UTF-8"
grails.converters.encoding = "UTF-8"

それらは適切に構成されていますか?

于 2012-08-11T02:05:52.463 に答える
0

製品では、server.xmlでtomcat6を次のように構成しました
<Connector port="14080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="14443" URIEncoding="UTF-8"/>
。最も重要な行は次のとおりです。URIEncoding="UTF-8"

于 2012-08-10T15:27:28.423 に答える
0

この投稿は数か月前のものであり、OP はより良い解決策を見つけた可能性があります。しかし、私が管理したこの問題の別の解決策は、問題のパラメーターの文字エンコーディングを明示的に変更することです。

例えば、params.paramsname = new String(params.unicodeInput.getBytes("8859_1"), "UTF8");

これによりparamsname、 が Unicode 文字に正しくデコードされます。

この問題に遭遇しましたが、これは単なる回避策であることを思い出してください。私もまだより良い解決策を探しています。チーズッ!

于 2012-09-26T09:11:07.337 に答える
0

MySQL データベースのデフォルトの文字セットは何ですか? 大丈夫ですか?

これは、MySQL データベースを作成する方法です。

create database [dbname] DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE utf8_swedish_ci;

CREATE DATABASE の完全な構文については、 http://dev.mysql.com/doc/refman/5.5/en/create-database.htmlを参照してください。

照合はソートに影響します。mysql の "show collat​​ion" sql ステートメントでリストを取得できます。http://dev.mysql.com/doc/refman/5.1/en/show-collat​​ion.html

既存のテーブルのエンコーディングを変更するには、次のコマンドを使用します。

ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name [COLLATE collation_name];

「show create table tbl_name」コマンドを使用して、既存のテーブルのエンコーディングを確認できます。データベースのデフォルトのエンコーディングを変更しても、既存のテーブル (または mysql ダンプからインポートされたテーブル) のエンコーディングは変更されません。

于 2012-08-10T15:50:16.547 に答える
0

申し訳ありませんが、何日も前に問題が何であるかを理解しましたが、今まで自分の質問に答える時間がありませんでした.

残念ながら、問題の重要な部分について言及するのを忘れていました。関連しているとは思わなかったからです。AJAX 呼び出しでのみエンコードの問題が発生しましたが、アプリケーションでのすべての節約は AJAX を介して行われるため、言及しませんでした。

したがって、エンコーディングの問題は、(UTF-8 で適切に動作するために) 次のようにする必要がある jQuery 投稿のコンテンツ タイプの構成に関連していました。

contentType: "application/x-www-form-urlencoded;charset=UTF-8"
于 2012-10-01T09:45:25.733 に答える
0

すでに試しましたか

${myHtmlContent.encodeAsHtml()}

あなたの見解では?

于 2012-08-10T16:32:25.600 に答える