0

Tomcat 6サーバーを使用して、Struts2とHibernate、MySQLを使用している会社の従業員から調査を受けるためのWebサイトがあります。これはイベントの質問を取得する方法で、イベントの質問は UTF-8 エンコーディングを使用しています。これは私のコードです:

public String getEventQuestion() {
          try {
                 event = surveyEventController.getEvent(this.getId());
                 surveyQuestions = surveyQuestionController.getQuestion(this.getId());
                 if (surveyQuestions != null) {
                       return Constants.SUCCESS;
                 } else {
                       return Constants.FAIL;
                 }
          } catch (Exception e) {
                 logger.error("[Exception]getSurvey: " + e.getMessage(), e);
                 return Constants.FAIL;
          }
   }

コントローラーからの getQuestion メソッド:

@SuppressWarnings("unchecked")
   public List<SurveyQuestion> getQuestion(Long eventID)
   {
          Session session = HibernateUtil.getSessionFactory().getCurrentSession();
          List<SurveyQuestion> listQuestion = null;
          try
          {
                 session.getTransaction().begin(); 

                 listQuestion = (List<SurveyQuestion>)session.createQuery("from SurveyQuestion where event_id="+eventID.toString()).list();
          session.getTransaction().commit();
          }
          catch(Exception e)
          {
                 logger.error("[Exception] getQuestion SurveyQuestion: ",e);
          session.getTransaction().rollback();
          }
          if(listQuestion!=null && !listQuestion.isEmpty())
          {
                 return listQuestion;
          }
          else
          {
                 return null;
          }
   }

すべての jsp ページのエンコーディングも UTF-8 です。

初めて Web サイトにアクセスすると、コンテンツは期待どおりに UTF-8 コンテンツで正常に読み込まれます。

問題は、F5 キーを押してページを更新すると、コンテンツが自動的に非 UTF-8 エンコーディングに変更されることです。行 session.getTransaction().commit() が実行されると、データベースがlistQuestion で非 UTF-8 エンコーディング content、おそらく ISO またはそのようなもので自動的に更新され、すべての特殊文字が ? に変更されることをデバッグして認識します。 . この問題を解決するにはどうすればよいですか?

4

1 に答える 1