MySQLJDBCドライバーのドキュメント JDBC接続URLでも文字エンコードを設定する必要があります。次に例を示します:
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
それ以外の場合、MySQL JDBCドライバーは、プラットフォームのデフォルトエンコーディングを使用して、ネットワーク経由で送信する前に文字をバイトに変換します。これは、明らかにUTF-8ではありません。カバーされていない文字はすべて疑問符に置き換えられます。
また、データを取得するときは、文字を表示/書き込みするコンソール/ファイルがUTF-8もサポート/使用していることを確認する必要があります。そうしないと、それらも疑問符になります。それを修正する方法は、それらの文字を表示/書き込みする方法/場所によって異なります。
関連項目:
ちなみに、SET NAMES
は必要ありません ここでクエリします。