1

MySQLデータベースにテーブルフィールドを挿入する最も単純なJSF2フォームがあります。

私のfaceletは<?xml version="1.0" encoding="UTF-8"?>一番上にあります。

私の入力は次のようなものです<h:inputText value="#{testController.entity.test}" id="test" />

そこで、Jpa2/Hibernateエンティティに「 provà 」を挿入しようとします。次に、それを永続化し、MySQLデータベースで保存された値を探すときに...

「 provà 」を見つけました。これは、私がいつも試してみることで解決するのと同じ古いエンコーディングの問題です。

それを修正するために最初に何をチェックするべきかを私に提案できますか?

つまり、この質問には情報が不足していることを知っています。あなたが私に何を尋ねているのかを知りたいだけです。あなたの質問で答えが見つかります。:)

4

2 に答える 2

1

私のfaceletは<?xml version="1.0" encoding="UTF-8"?>一番上にあります。

これは問題とは無関係です。これは、XML ファイルのコンテンツをツリー ベースの階層に解析する前に読み取るときに使用する文字セットを XML パーサーに通知するだけです。

具体的な問題には、2 つの原因が考えられます。

  1. HTTP リクエストの文字エンコーディングが正しく設定されていません。ただし、JSF/Facelets はデフォルトですでにすべてのレイヤーで UTF-8 を使用しているため、これは通常の状況ではありません。ただし、この問題は、JSF/Facelets が適切な文字エンコーディングを設定する前に、別の何かが HTTP リクエスト ボディにアクセスした場合に発生する可能性があります。PrimeFaces 3.x はそれを行うことが知られています。PrimeFaces 入力コンポーネントを介して取得した Unicode 入力が破損するも参照してください。これを修正する方法の 1 つは、 JSF での UTF-8 フォーム送信のように見えるフィルターを作成することです。

  2. JDBC 接続の文字エンコーディングが正しく設定されていません。MySQL JDBC ドライバーは、サーバー テーブルの文字エンコーディングではなく、クライアント プラットフォームのデフォルトの文字エンコーディングを使用します。MySQL JDBC URL が次のようになっていることを確認します。

    jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
    
于 2012-06-14T13:52:36.447 に答える
0

xhtmlにh:form acceptcharset = "UTF-8"を入れてみてください(私のために働いた):

于 2012-06-14T11:11:12.943 に答える