系统中文保存后显示问号该如何解决(java+Springboot)

在这里插入图片描述

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主

⛪️ 个人社区:个人社区
💞 个人主页:个人主页
🙉 专栏地址: ✅ Java 中级
🙉八股文专题:剑指大厂,手撕 Java 八股文

文章目录

      • 1.问题背景
      • 2.遇到此类问题如何分析解决呢?
        • 1、先连接mysql 查看对应的表存储的是否是中文
        • 2、系统是否是设置了正确的支付编码:
        • 3、检查数据库是否设置了正确的字符编码;
        • 4、项目是否指定了正确的字符编码

1.问题背景

今天遇到一个现场问题,客户侧通过系统在界面保存一条数据,其中数据的title是中文,保存成功后,界面上中文显示一串问号。

在这里插入图片描述

2.遇到此类问题如何分析解决呢?

首先梳理排查思路:
1、是否是显示问题
2、系统是否是设置了正确的支付编码;
3、检查数据库是否设置了正确的字符编码;
3、项目是否指定了正确的字符编码;

四个步骤逐步排查:

1、先连接mysql 查看对应的表存储的是否是中文

连接进入查看数据库也存储的是???,那么也就是不是显示问题了。

2、系统是否是设置了正确的支付编码:

首先通过命令 locale 查看系统字符编码
在这里插入图片描述

系统是默认的字符编码,我们可以设置下,然后可以通过下面命令查看系统支持哪些字符编码:

locale -am|grep zh

在这里插入图片描述

我们可以选择 zh_CN.utf8, 可以通过以下方法:

vi /etc/profile

增加配置

export LC_ALL=zh_CN.utf8
export LANG=zh_CN.utf8

然后保存,执行 source /etc/profile,通过命令 locale 或者 echo $LANG 都可以查看是否生效;

完成上面修改后,我们到界面上测试,发现还是问号;

那么我们再进行第二步排查。

3、检查数据库是否设置了正确的字符编码;

这个有两种方式,第一种看配置文件

vi /etc/my.cnf 

查看 [mysqld]、 [mysql] 下的字符编码:
在这里插入图片描述
在这里插入图片描述

第二种,通过mysql 客户端链接mysql,执行 show variables like ‘%char%’查看:

在这里插入图片描述

从这里可以看出 mysql 保存的编码是对的,但是为了一定确认没问题,我们可以做个小测试,创建一个测试表

CREATE TABLE `test` (`test` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后插入一条数据检查

insert into test (test) value ('张三');

然后执行查询语句:

select * from test;

验证后发现也能正常显示中文。

然后我只能怀疑是项目的编码设置的有问题了。

4、项目是否指定了正确的字符编码

于是我修改了 springboot 项目的启动文件,增加一段配置:

-Dfile.encoding=UTF-8

然后重启应用,再次到界面添加中文测试,发现已经可以解决问题了。

在这里插入图片描述

精彩专栏推荐订阅:在下方专栏👇🏻
✅ 2023年华为OD机试真题(A卷&B卷)+ 面试指导
✅ 精选100套 Java 项目案例
✅ 面试需要避开的坑(活动)
✅ 你找不到的核心代码
✅ 带你手撕 Spring
✅ Java 初阶

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/503305.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记 YOLOv9模型相关论文简读

一、YOLOv9简述 自 2015 年 Yolov1 推出以来,已经出现了多个版本。 基于Darknet的YOLOv2、YOLOv3和YOLOv4 YOLOv5 YOLOv8 基于 Ultralytics。 SCALED-YOLOv4 使用 Pytorch 而不是 Darknet。 YOLOR是YOLOv4的改进。 YOLOX是YOLOv3的改进。 YOLOv6专注于工业应用。 YOLOv7 来自 …

解决Unable to load class ‘org.gradle.api.attributes.VerificationType‘

在使用AdnroidStudio开发过程中难免会遇到Unable to load class org.gradle.api.attributes.VerificationType报错,可以尝试清理缓存重启解决 打开 File-》Invalidate Caches... 重启AndroidStudio后,重新加载即可,但也不是百分百解决。

一、环境配置

一、下载Ubuntu18.04版本镜像 我的电脑配置比较低(08年奥运限定版哦),使用的是虚拟机VMware进行安装Ubuntu18.04版,跟书上使用的一样 Ubuntu 18.04镜像 别下载错了哈 二、VMware下安装Ubuntu18.04操作系统 之前写过相关的博文,详细配置可…

解决ODOO12 恢复数据库提示内存不够报错

1. 现象 点击 ‘restore database’ 控制台报错: 2. 解决措施 a. 进入启动脚本的文件夹 cd odoo/odoo-12.0/输入命令 ./odoo-bin --addons-pathaddons --databaseodoo --db_userodoo --db_passwordodoo --db_hostlocalhost --db_port5432 -i INITb. 刷新页面…

【PyTorch][chapter 20][李宏毅深度学习]【无监督学习][ GAN]【实战】

前言 本篇主要是结合手写数字例子,结合PyTorch 介绍一下Gan 实战 第一轮训练效果 第20轮训练效果,已经可以生成数字了 68 轮 目录: 谷歌云服务器(Google Colab) 整体训练流程 Python 代码 一 谷歌云服务器(Google Colab&…

深度学习_16_权重衰退调整过拟合

所谓过拟合即模型复杂度较高,但用于训练数据集过于简单,最后导致模型将过多无用渣质作为学习对象 这个在上篇 深度学习_15_过拟合&欠拟合 已经详细介绍,以下便不再赘述。 上篇提到要想解决过拟合现象可以试着降低模型复杂度&#xff0c…

Windows 10 合并磁盘分区 (G and H)

Windows 10 合并磁盘分区 [G and H] 1. 设备和驱动器2. 计算机 -> 管理 -> 存储 -> 磁盘管理3. 删除卷4. 新建简单卷5. 设备和驱动器References 1. 设备和驱动器 2. 计算机 -> 管理 -> 存储 -> 磁盘管理 3. 删除卷 H: -> right-click -> 删除卷 H: 变…

html2canvas 将DOM节点转成图片

官网地址:html2canvas - Screenshots with JavaScript 将js文件保存到本地 可以新建一个txt文件,然后丢进去修改后缀名称即可。 在项目中引入js文件: import html2canvas from "../html2canvas.min.js" 这是我准备画的DOM节点。…

【AIGC】微笑的秘密花园:红玫瑰与少女的美好相遇

在这个迷人的画面中,我们目睹了一个迷人的时刻,女子则拥有一头柔顺亮丽的秀发,明亮的眼睛如同星河般璀璨,优雅而灵动,她的微笑如春日暖阳,温暖而又迷人。站在红玫瑰花瓣的惊人洪水中。 在一片湛蓝无云的晴…

【AI Agent系列】【MetaGPT多智能体学习】5. 多智能体案例拆解 - 基于MetaGPT的智能体辩论(附完整代码)

本系列文章跟随《MetaGPT多智能体课程》(https://github.com/datawhalechina/hugging-multi-agent),深入理解并实践多智能体系统的开发。 本文为该课程的第四章(多智能体开发)的第三篇笔记。主要是对课程刚开始环境搭…

C#,哈夫曼编码(Huffman Code)压缩(Compress )与解压缩(Decompress)算法与源代码

David A. Huffman 1 哈夫曼编码简史(Huffman code) 1951年,哈夫曼和他在MIT信息论的同学需要选择是完成学期报告还是期末考试。导师Robert M. Fano给他们的学期报告的题目是,寻找最有效的二进制编码。由于无法证明哪个已有编码是…

Facebook直播网络需要满足什么条件

Facebook直播已经成为了企业、个人和组织开展在线活动、互动和营销的重要平台之一。然而,要确保Facebook直播的顺利进行和观众体验的良好,需要满足一系列关键条件。本文将探讨Facebook直播网络 需要满足的关键条件。 1、稳定的互联网连接: 稳…