在mysql中配置utf8

时间:2012-12-05 09:12:01

标签: java mysql utf-8

我将数据从一个数据库复制到另一个数据库。第一个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有关。

1 个答案:

答案 0 :(得分:0)

JDBC通信的java连接字符串:

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

设置中存在重叠/冗余/太多(服务器+客户端+ JDBC通信), 但这应该是为JDBC部分做的。

如果问题仍然存在,请再次尝试默认设置,并在CREATE DATABASE / TABLE /列上指定UTF-8。