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 またはそのようなもので自動的に更新され、すべての特殊文字が ? に変更されることをデバッグして認識します。 . この問題を解決するにはどうすればよいですか?