0

私はあるデータベースから別のデータベースにデータをコピーします。最初の DB には cp1251 コードページがあります。

第一歩

シンプルなJavaプログラムを使用して、最初のデータベースからシンプルなcsvファイルにデータをコピーしました。DB からデータを抽出している間、コンソール アウトは読み取り可能です。

csv ファイル utf-8 のコードページ (いくつかのテキスト エディターでチェックしたところ、すべてのデータが読み取り可能で、テキスト エディターはファイルの文字セットを utf-8 として定義しています)

Java マシンのデフォルトの文字セットは utf-8 です utf8 文字セットの csv ファイル 新しい mysql db は utf8 ファイルにあります

これは、mysql cmd のコマンド ステータスで出力されます

Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    cp866
Conn.  characterset:    cp866
TCP port:               3306
Uptime:                 25 min 29 sec

mysql db のすべてのテーブルと文字セットは utf-8 です

別の単純な Java プログラムを使用して mysql にデータを挿入します

mysql のデータが読めない

mysql サーバーの設定

[server]

## UTF 8 Settings
#init-connect=\'SET NAMES utf8\'
collation_server=utf8_unicode_ci
character_set_server=utf8
#skip-character-set-client-handshake
character_sets-dir="C:/Programm/xampp/mysql/share/charsets"

[client]
default-character-set=utf8

jdbcの準備済みステートメントで問題になる可能性のあるutf8ではなくutf16を使用するjvmがサーバー側に見つかりました。

4

1 に答える 1

0

JDBC 通信用の Java 接続文字列:

jdbc:mysql://localhost/MYDB?useUnicode=true&characterEncoding=UTF-8

設定 (サーバー + クライアント + JDBC 通信) にオーバーラップ/冗長性/多すぎる部分がありますが、JDBC 部分ではそれで十分です。

問題が解決しない場合は、デフォルト設定を再試行し、CREATE DATABASE/TABLE/column で UTF-8 を指定してください。

于 2012-12-05T09:26:00.667 に答える