数据库不能存储汉字

博客详细记录了解决MySQL数据库存储汉字出现问号的全过程,包括修改数据库、表、字段的字符集,以及在建表时指定字符集。同时指出在与前后端连接时,XML配置文件中URL属性`useUnicode=true&characterEncoding=utf8`的重要性,确保编码一致以避免乱码问题。
摘要由CSDN通过智能技术生成

使用数据库一直不能存储汉字,每次都报错,在网上查阅了下资料,试了下都不好使,其中有一种方法虽然没有成功但是也给了我一些启发,就是使用sql语句修改字符集

set character_set_client=utf8;

set character_set_connection=utf8;

set character_set_results=utf8;

但是也是不好用,后来找到一个特别细致的帖子,试了下特别好用

不仅修改数据库的字符集,还要修改客户端的,同时也修改了字段的字符集。以下为我的数据库中某一表格修改字符集的代码。

alter database db1 default character set = utf8;-- // tb1为数据库名
alter table db1.tb_brand default character set = utf8;  -- // bd_brand为表名
alter table db1.tb_brand modify column brand_name varchar(20) character set utf8 collate utf8_general_ci; -- // 这里也会改变字段类型
alter table db1.tb_brand modify column company_name varchar(20) character set utf8 collate utf8_general_ci;
alter table db1.tb_brand modify column description varchar(20) character set utf8 collate utf8_general_ci;

设置完后,在数据库中存储汉字是没问题了,在建表时候最后加上一句character set = utf8;也可以解决问题,例如

create table it_user(
id int,
name varchar(50),
username varchar(200),
gender char(1),
age int
) character set = utf8;

可是当和前后端代码连接起来的时候,发现汉字都被存储为问号了,于是继续查找原因,发现在连接数据库的xml文件中的连接数据库的URL也要添加一条属性useUnicode=true&characterEncoding=utf8

添加后成功解决问题

而且以后建表的时候也要规定utf-8,而且排序也要使用utf-8,总之一句话就是要保持各个地方的编码格式一致。数据库的编码和项目的编码都用UTF-8。

以下为各种参考文件

https://segmentfault.com/q/1010000006021630

报错处理:传汉字到mysql数据库,显示问号的解决方法_tctctttccc的博客-CSDN博客

JSP/Servlet中的编码相关设置_superbeck的专栏-CSDN博客_servlet设置编码格式

以下为摘抄另一位博主的帖子,以备不时之需。并且在这里贴一下这篇文章的地址https://www.cnblogs.com/zhi-leaf/p/12553014.html

检测发现,MySQL未设置默认字符集的情况下,默认字符集为latin1,它不支持汉字,那我们的解决方案就很清楚了,就是改变字符集。

我们先改变数据库的字符集

我们再改变表的字符集:

到这,我保存数据时依旧报错,再次查资料,发现字段也有字符集

show full columns from bd_user;

我们这个字段删除后重新创建,字符集就好了

当然,我们也可以用SQL语句修改字符集:

alter database test default character set = utf8; // test为数据库名
alter table test.bd_user default character set = utf8;  // bd_user为表名
alter table

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值