为什么中文存入数据库中会乱码

为什么中文存入数据库中会乱码,第1张

你的mysql客户端和你的mysql服务器的编码不一样,,应为utf8编码的中文是3个字符,而gbk编码的中文是两个字符,,这样解析出来的中文就是乱码了。。你需要该数据库的字符集编码。。。具体如下:

找到mysql

的ini配置文件

在[client]这里加上default_character_set

=

utf8

在[mysqld]这里加上character_set_server

=

utf8

不出意外应该可以了

可能原因一:数据库不支持中文,或者是数据库编码格式和java代码编码格式不一致,这种情况需要修改数据库编码格式:

ALTER SYSTEM DISABLE RESTRICTED SESSION改完编码后执行

sql> conn / as sysdba

sql> shutdown immediate

database closed.

database dismounted.

oracle instance shut down.

sql> startup mount

oracle instance started.

total system global area  135337420 bytes

fixed size                          452044 bytes

variable size                     109051904 bytes

database buffers              25165824 bytes

redo buffers                      667648 bytes

database mounted.

sql> alter system enable restricted session

system altered.

sql> alter system set job_queue_processes=0

system altered.

sql> alter system set aq_tm_processes=0

system altered.

sql> alter database open

database altered.

sql> alter database character set internal_use UTF-8

sql> shutdown immediate

sql> startup

可能原因二:java代码生成插入语句的时候,已经发生乱码现象,这种只能是修改项目编码格式或者是在数据获取的时候直接转译代码编码格式来实现了。

① 首先把MySQL的服务停掉 在运行窗口输入:net stop mysql

② 把服务器和客户端的字符集改成自己想用的字符集:GB2312或是utf8等……

具体 *** 作为:打开mysql安装目录下的myini.tet;

找到default-character-set,将其改为自己想用的字符集:GB2312或是utf8等……,要注意的是这里有两个default-character-set,用ctrl+f定位在文件最前面输入default就会找到,都要改过来;

③ 重启MySQL服务器,在运行窗口输入:net start mysql

④ 最重要的是一点是,到这里我们已经能够解决乱码问题了,可问题是我们依然还会出现乱码问题,这是因为我们现在的表被创建的时候用的是默认的字符集(latin1),所以这时候我们要把表删除,然后重建就可以了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10093398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存