VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1921|回复: 8

关于数据库中的中文编码问题

[复制链接]

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-2 12:00:02 | 显示全部楼层 |阅读模式
有个问题一直不明白。我用JDBC往mysql里面写一行记录。我在Java程序里面直接写中文。但是在mysql里面看到的却是乱码。

请问这个问题是怎么回事阿?

谢谢各位!
回复

使用道具 举报

0

主题

20

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
发表于 2020-4-3 23:00:02 | 显示全部楼层
修改mysql的默认字符集是通过修改它的配置文件来实现的。一般分两种情况:
[编辑]
Windows平台

windows下的mysql配置文件是my.ini,一般在c:\windows\my.ini或者c:\winnt\my.ini可以直接在这个文件里面加上

default-character-set=gbk #或gb2312,big5,utf8

然后重新启动mysql

service mysql restart



/etc/init.d/mysql restart

或用其他方法重新启动,就生效了。
[编辑]
Unix平台

linux下的mysql配置文件是my.cnf,一般是/etc/my.cnf,如果找不到可以用find命令找一下:

find / -iname my.cnf

在这个文件里面加上

default-character-set=gbk #或gb2312,big5,utf8

然后重新启动mysql

net stop mysql
net start mysql

就生效了。
回复

使用道具 举报

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-7-15 20:45:01 | 显示全部楼层
谢谢。我先试试。
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-7-29 01:45:01 | 显示全部楼层
创建表如着样  CREATE DATABASE `test` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
回复

使用道具 举报

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-8-19 19:45:01 | 显示全部楼层
To noendenergy:
好像不行。我用的是linux,mycnf是这样的:
[mysqld]
#This option makes InnoDB to store each created table into its own .ibd file.
innodb_file_per_table
default-character-set=utf8

但我用数据库管理工具去看还是乱码,在命令行下用mysql命令去看,还是乱码(我的console也是UTF8)。但是从数据库里面读出来到Java String里面就对了。所以我的程序跑起来表面没什么编码不一致,但是我进入数据库里面一看就是乱码。为什么呢?

To 期待爱情 :

我用数据库管理工具去看,表中每个field的Charset都是UTF8编码。我的操作系统的locale都是UTF8. 为什么还有不一致的情况呢?

谢谢!
回复

使用道具 举报

0

主题

12

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-8-19 21:45:01 | 显示全部楼层
大概UTF-8不可以直接看.
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-19 22:00:01 | 显示全部楼层
1. jdbc的Connection中url参数:jdbc:mysql://localhost/DATABASE_NAME?useUnicode=true&characterEncoding=UTF-8,
其中“useUnicode=true&characterEncoding=UTF-8”这段有没有,没有就要加上。

2. 建立数据库时候:
create database DATABASE_NAME DEFAULT CHARACTER SET utf8;
其中:“DEFAULT CHARACTER SET utf8” 要加上,这样就表示该数据库 DATABASE_NAME 下的所有表和字段(char, varchar)默认是utf8.


另外你在mysql上看,这究竟是在linux下命令行状态下看还是在MySQL Query Brower下看呢?
如果在linux命令行下看多数会乱码,如果在MySQL Query Brower是乱码就按上面2点所改就可以了。
回复

使用道具 举报

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-8-19 22:30:01 | 显示全部楼层
恩。的确是的,用Query Browser看没有问题,但是命令行下不行(我的locale已经是utf8了。)谁有解?
回复

使用道具 举报

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-8-19 22:45:01 | 显示全部楼层
谢谢你,在你的提示下我联想到查查mysql的参数,发现了--default-character-set=utf8。可以了。
谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表