解决mysql数据库表读取中文乱码问题

news2025/2/22 10:32:17

本文目录

      • 0、省流
      • 1、问题出现
      • 2、问题排查
      • 3、结论

0、省流

在服务器上创建数据库服务时,使用的sql脚本加载的数据库表,其中脚本中有一些预设的测试数据包含中文汉字,由于linxu服务器控制台默认编码是lantin1,导致中文通过该编码方式被编码成了乱码之后并存到了数据库中,而我们设置的读取规则的编码都是utf-8, 因此在navicat以及读到前端上中文显示的都是乱码。

除非将数据库表的编码规则设成lantin1(不过没人会设吧,都是用utf-8),不然解决的方法就是手动将这些乱码修改成中文。不过不影响新添加的中文汉字数据,因为这些汉字没有经过lantin1编码。另一个方法就是修改控制台编码为utf-8,防止下次再加载脚本时汉字变成乱码,修改语句为:

export LANG=en_US.UTF-8

1、问题出现

  1. 在建表的时候我使用的是下面的语句:

    DROP TABLE IF EXISTS `hoppy_sets`;
    CREATE TABLE `hoppy_sets` (
    	`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	`hoppy_name` VARCHAR ( 10 ) NOT NULL COMMENT '爱好大类名',
    	`create_by` BIGINT DEFAULT NULL COMMENT '创建人',
    	`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    	`update_by` BIGINT DEFAULT NULL COMMENT '更新人',
    	`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    	`del_flag` TINYINT DEFAULT 0 COMMENT '删除标记'
    	
    ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '爱好大类表';
    

    设置了字符集为 utf8mb4 和排序规则为 utf8mb4_general_ci,对汉字是兼容的。

  2. 在控制台读取汉字显示正常

    当我在控制台读取数据的时候,汉字显示是正常的

    在这里插入图片描述

  3. navicat中和前端读取显示中文乱码

    但是在navicat中和读取到前端展示的时候却出现了乱码:

在这里插入图片描述

在这里插入图片描述

2、问题排查

首先springboot连接是没问题的,设置的编码是utf8

jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false

但是读取的时候就成了乱码:

在这里插入图片描述

数据库中设置的字符集也没问题:

在这里插入图片描述

然后我通过navicat gender_types 表中的乱码数据修改成中文,发现springboot读取的正常了,前端也能正常显示。
在这里插入图片描述

但控制台输出的中文却变成了???

在这里插入图片描述

我就在想会不会是服务器的编码问题,之后通过查阅资料找到了一些描述:

在这里插入图片描述

意思是服务器的控制台编码是Latin1 导致中文显示出了问题,然后我按照它的解决方法,将控制台的编码改成utf-8

export LANG=en_US.UTF-8

然后这些问号就变成了正常的中文数据,但是没改的那些数据在控制台输出却变成了乱码。
在这里插入图片描述

在这里插入图片描述

3、结论

通过上面的分析,看来是控制台编码与数据库编码不一致搞得鬼。

一开始控制台的编码是latin1,控制台输出正常,但是其他方式乱码。说明存到数据库里的数据就是用latin1编码的,而不是utf-8

但为什么不是utf-8编码的呢?

因为在创建数据库的时候,我通过加载sql脚本的方式创建的数据库表,里面有一些插入语句插入中文数据,因此在加载的时候这个数据的中文被控制台latin1编码,然后存入了数据库中。因此在控制台输出不是乱码,而读取的时候用utf8读的就是乱码了。把控制台的编码改成utf8之后,之前的那些被latin1编码的中文,在控制台输出自然就又变成了乱码。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙HarmonyOS开发:多种内置弹窗及自定义弹窗的详细使用指南

文章目录 一、消息提示框(showToast)1、导入模块2、语法3、参数4、示例5、效果 二、对话框(showDialog)1、导入模块2、语法3、参数4、示例5、效果 三、警告弹窗(AlertDialog)1、语法2、参数3、AlertDialogP…

JDBC(Java访问数据库)

Java Database Connectivity:Java访问数据库的解决方案 JDBC定义了一套标准接口,即访问数据库的通用API, 不同的数据库厂商根据各自数据库的特点去实现这些接口。 JDBC希望用相同的方式访问不同的数据库,让具体的数据库操作与数…

科普文:科普文:springcloud之-Hystrix服务容错

Hystrix概念 Hystrix 服务容错保护 的概念和说明 这就是大名鼎鼎的:豪猪 豪猪的英文就是:Hystrix,国外一些大牛的程序员在给自己的架构起名字的时候,往往就这么特别。哪天咱们中国人自己也能写出些架构,咱们就按照中…

⚒linux通过shell脚本上传文件至minio中

🔴大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言 之前数据库是备份到了七牛云上了,但是眼看着数据库文件越来越大,七牛云里面的余额越来越少,所以,转移阵地。 家里的nas&…

昇思25天学习打卡营第20天|munger85

GAN图像生成 生成对抗网络中是为了让我们生成的东西向期望的那样,就是为了让生成的东西很像,真的,例如用它来画画。就是描述整个网络的逻辑和目的,它有两部分组成,一个是生成器,一个是辨别器。他希望的是辨…

C++程序编程中的 SetWindowLong 函数的几个常见用途(附源码)

目录 1、API函数SetWindowLong说明 2、修改窗口风格 3、给窗口指定新的窗口消息处理函数,以拦截窗口消息 4、可以给窗口设置关联的UserData数据,方便在窗口内部使用这些数据 5、64位程序中需要使用SetWindowLongPtr 6、最后 C++软件异常排查从入门到精通系列教程(专栏…

Sping项目只能勾选17和21 (已解决) 导致的后续Invalid bound statement (not found):

问题发现 今天创建项目的时候发现 idea初始化spring的时候选择不了Java8 解决方案:替换URL为 https://start.aliyun.com/ 将IDEA页面创建Spring项目,其实是访问spring initializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。 将https://start.spr…

TortoiseSVN安装使用教程(超详细)

目录 前言1. 下载2. 安装2.1 安装TortoiseSVN(看图操作)2.2 安装语言包(看图操作) 3. 使用3.1 版本库浏览器3.2 其他教程 前言 TortoiseSVN:(俗称小乌龟)Subversion版本控制系统的一个免费开源客…

Pytorch基础:Tensor的view方法(非连续张量也可以使用view)

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 在Pytorch中,view是Tensor的一个重要方法,用于返回一个改变了形状,但数据和数据的顺序与原来一致的新张量,但是新张…

夸克Android一面凉经(2024)

夸克Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《夸克Android一面凉经(2024)》。 面试职位: 智能信息-客户端开发工程师-夸克小说 技术一…

20240728 每日AI必读资讯

Google Gemini 聊天机器人更新 可以免费使用Gemini 1.5 Flash 1. 引入Gemini 1.5 Flash模型: • 提供更快和更高质量的响应。 • 提升推理和图像理解能力。 • 上下文窗口扩大到 32Ktokens,允许进行更长的对话和处理更复杂的问题。 • 即将支持通过 Goo…

【你也能从零基础学会网站开发】 SQL结构化查询语言应用基础-- SQL Server数据库开发创建表之FOREIGN KEY外键约束完全详解最详细!

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 浅谈FOREIGN K…

故障诊断 | CNN-LSSVM卷积神经网络结合最小二乘支持向量机故障诊断(Matlab)

效果一览 文章概述 故障诊断 | CNN-LSSVM卷积神经网络结合最小二乘支持向量机故障诊断(Matlab) 模型描述 使用CNN进行特征提取: 使用CNN模型对数据进行训练,通常是图像数据。 通过CNN的卷积层和池化层提取图像的特征。 将提取到的特征作为输入,可以是全连接层的输出或者卷…

系统架构师考点--系统架构设计(上)

大家好。今天我来总结一下系统架构设计相关的考点。这块考点是重中之重,每年上午场客观题占20-25分左右,下午案例题也会考到,下午论文也会考到。大家要好好学学这部分内容。 一、软件架构概述 软件架构是指从需求分析到软件设计之间的过渡过…

机器学习 | 分类算法原理——逻辑回归

Hi,大家好,我是半亩花海。接着上次的线性可分继续更新《白话机器学习的数学》这本书的学习笔记,在此分享逻辑回归这一分类算法原理。本章的分类算法原理基于《基于图像大小进行分类》项目,欢迎大家交流学习! 目录 一、…

【51CTO-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

vim的使用及退出码(return 0)

linux基础之vim快速入门 linux基础之vim快速入门_基本linux vim-CSDN博客https://blog.csdn.net/ypxcan/article/details/119878137?ops_request_misc&request_id&biz_id102&utm_termvim%E7%BC%96%E8%BE%91%E5%99%A8%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E4%BA%…

达梦数据库激活

SSH登录 192.168.0.148 账号:root 密码:xxx 1.上传 dm.key 文件到安装目录 /bin 目录下 cd /home/dmdba/dmdbms/bin rz -E dm.key2.修改 dm.key 文件权限 chown -R dmdba.dinstall dm.key3.打开数据库工具,新建查询,输入 cd /…

Odoo 17 仪表盘开发指南:打造高效的数据可视化中心

在现代企业管理中,数据驱动的决策至关重要。Odoo 17 提供了强大的平台来构建自定义仪表板, 适用于数据统计、工作台、驾驶舱、数据可视化等场景,以便用户能够一目了然地监控关键指标并做出及时反应。本文将介绍如何在 Odoo 17 中开发一个灵活且高度定制化的仪表盘系统,包括…