我将数据从一个数据库复制到另一个数据库。第一个DB有cp1251代码页。
第一步
我使用简单的java programm将数据从第一个db复制到简单的csv文件。从DB中提取数据时,可以读取控制台输出。
csv文件的代码页utf-8(我在几个文本编辑器中检查过,所有数据都是可读的,文本编辑器将文件的字符集定义为utf-8)
java机器默认charset是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
服务器端的jount使用utf16而不是utf8,这可能与jdbc中的preparedstatement有关。
答案 0 :(得分:0)
JDBC通信的java连接字符串:
jdbc:mysql://localhost/MYDB?useUnicode=true&characterEncoding=UTF-8
设置中存在重叠/冗余/太多(服务器+客户端+ JDBC通信), 但这应该是为JDBC部分做的。
如果问题仍然存在,请再次尝试默认设置,并在CREATE DATABASE / TABLE /列上指定UTF-8。