私は現在、Spring MVC webapp を構築しており、データベースは重要なバックエンド部分です。ただし、何らかの理由で、Spring はデータを UTF-8 として処理することを拒否しています。ビュー、リソース、およびブラウザーが Unicode に設定されているため、データベース内のテーブルも同様に設定されているため (同様の質問をかなり読んでいます)、問題はデータベース接続にあることがわかりました。
JDBC ドライバーには、 connectionPropertiesで次の 2 つの項目を提供する必要があります: useUnicode ( yesに設定)と characterEncoding ( utf8に設定) 。
JDBC は Bean であり、次のように XML ファイルを介して構成されます。
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/<database>" />
<property name="username" value="<not telling>" />
<property name="password" value="<not telling>" />
この設定では、データベースから取得した英数字以外のすべての文字 (矢印やギリシャ文字など) を疑問符に変換します。これは明らかに受け入れられません。
私は複数の解決策を試しました: JDBC URL を として指定し、ファイル (および MySQL Workbench)jdbc:mysql://localhost:3306/<database>?useUnicode=yes&characterEncoding=utf8
で再生して、データベース内のすべてを強制的に文字セットにデフォルト設定し、最大の頭痛の種である. 結局のところ、単一の Bean 内に 2 つの connectionProperties を設定することは文字通り不可能です。なぜなら...どこにも言及されている区切り文字がないためです (Bean は、 の値として設定しようとしてそれを読み取ろうとします)。私の質問は次のとおりです。my.ini
utf8
<property name="connectionProperties" value="useUnicode=yes;characterEncoding=utf8" />
yes;characterEncoding=utf8
useUnicode