我确实将数据从一个数据库复制到另一个数据库。第一个 DB 有 cp1251 代码页。
第一步
我确实使用简单的 java 程序将数据从第一个 db 复制到简单的 csv 文件。在从数据库中提取数据期间,控制台输出是可读的。
csv文件utf-8的代码页(我在几个文本编辑器中检查了它,所有数据都是可读的,文本编辑器将文件的字符集定义为utf-8)
java 机器默认字符集是 utf-8 csv 文件在 utf8 字符集中新的 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
在服务器端发现 jvm 使用 utf16 而不是 utf8,这可能是 jdbc 中的preparedstatement 问题。