生僻字问题解决

文章讲述了生僻字在数据库存储和页面显示时遇到的问题,包括三字节和四字节汉字的处理。解决方案包括将数据库字符集改为utf8mb4,以及在jdbc连接中设置useUnicode和characterEncoding属性。页面显示问题可能由后台或前端编码不一致引起,需检查并统一编码为utf-8。
摘要由CSDN通过智能技术生成

问题1.生僻字不能在数据库中保存与正常显示

 䶮、㛃、𠅤等三字节汉字可以正常保存在数据库中,𫓩、𬱖等四字节汉字无法保存在数据库表中。

原因分析:一般来说,正常汉字不会超过 3 个字节,但是会出现一些生僻字为 4 个字节 (当然,有的 emoji 表情符号也是 4 个字节),而 MySQL 的 UTF-8 编码只能支持 1-3 个字节,如果想保存 4 个字节的字符,则需要把字符集修改为 utf8mb4,而且 MySQL 的版本要高于 5.5.3。

问题2:数据库修改编码utf8mb4后能正常保存的生僻字,无法从数据库传递到到系统中

解决办法:在jdbc连接中添加useUnicode=true;  characterEncoding=utf8;

问题3:页面显示?或者为空

页面显示为空,大概率是问题2导致的。数据从数据库传入后台时就无法正常获取了。根据问题2的解决办法可解决。

页面显示为?,要分析是是一个?还是两个??

一个?说明后台是把一个四字节的汉字当成了一个字。说明后台处理这个字没有问题,后台编码没问题。这个时候可能是页面编码的问题。

举例:下面是文心一言页面,点击查看源码的内容。可以看到编码是utf-8。

 那么可以用这个方法看下自己的页面是否是utf-8。如果不是,则要根据自己的前端架构修改页面的编码。

如果页面显示为两个??

那么应该考虑后台代码并不能把这个四字节的汉字当成一个字。那么此时问题应该是后台处理业务逻辑的代码不是utf-8,则应该根据后台架构,修改业务逻辑处理的编码为utf-8。然后再看页面显示生僻字是否正常,还是变成一个?。在观察是否进行上一步操作。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值