mysql向数据库插入乱码和java向mysql数据库写入乱码
本文内容列表:
- 1、mysql数据库表值乱码问题:
- 2.为什么mysql插入的数据出现乱码?
- 3、MySQL插入数据时遇到乱码怎么办?
MySQL数据库表值问题:
1。转码失败
数据写入表的过程中转码失败,数据库没有正确处理,导致表中存储的数据出现乱码。
针对这种情况,前面的文章中介绍了客户端向服务器发送请求。
如果任何一个编码不一致,都会导致表中的数据以错误的编码存储,并产生扭曲的字符。
例如以下简单命令:
set @a = "text string";
insert into t1values(@a);
@a变量的字符编码由CHARACTER_SET_CLIENT 参数。假设此时的编码为A,即@a变量的编码。
2。写入命令在发送到 MySQL 服务器之前的编码由 CHARACTER_SET_CONNECTION 决定,前提是当前编码为 B。
3。使用MySQL进行一系列词法和语法分析处理后,写入表t1中。表t1的编码为C。
如果编码A、编码B、编码C不兼容,写入的数据将直接损坏。
2。客户端乱码
表数据正常,但是客户端显示后出现乱码。
此类场景是从 MySQL 表中获取数据并将其返回给客户端。 MySQL本身的数据没有问题。客户端向MySQL发送请求,表代码为D。从MySQL中取出记录结果,传递给客户端。目前,记录代码为E (CHARACTER_SET_RESULTS)。
如果上述E码和D码不兼容,得到的数据就会出现失真。但由于数据本身并未被破坏,因此更改为兼容的编码可以产生正确的结果。
该类别分为以下三个不同的子类别:
1)字段编码与表一致,但客户端使用不同的编码
例如下面的例子中,字段的编码表数据为utf8mb4,SESSION 1开始的连接码为gbk。由于编码不兼容,所以检索出来的数据肯定是乱码。
2)表的编码与客户端的编码一致,但记录之间的编码存在不一致
例如表的编码是utf8mb4,应用程序的编码也是utf8mb4 ,但是表中的数据一半可以用 utf8mb4 编码,另一半是 gbk 。那么此时表中的数据也是正常的,但是此时无论使用什么编码,都无法读取到所有完整的数据。生成此类数据的原因有很多。例如,一种可能性是表的编码已更改多次,并且每次更改都是不完整的(不完整的更改在我的上一章中讨论过)。比如t3表的编码以前是utf8mb4,现在是gbk,两种编码时都写入了正常数据。
3)各个字段的编码不一致,导致出现乱码,场景与第二点相同。不同的是:未注册记录之间的编码不统一,但各个字段的编码不统一。例如表字段c1 a1,a2。 a1编码为gbk,a2编码为utf8mb4。单独读取每个字段时数据是完整的,但是当所有字段一起读取时,数据总是会出现部分乱码。
3。 LATIN1
另一种情况是以LATIN1
存储数据,LATIN1字符集几乎是每个人都知道的。 LATIN1 处理一个字节流中的所有字符。当遇到Stream无法处理的字节时,保持原样,那么在上述两次保存和加载过程中就可以保证数据的一致性,所以长期以来MySQL的默认编码都是LATIN1。这种情况看上去没有什么问题,数据也没有乱码,那为什么还要选择其他编码呢?这是因为字符存储的字节数不同。比如表情符号“❤”用utf8mb4存储,占用3个字节,那么varchar(12)可以存储12个字符,但如果换成LATIN1就只能存储12个字符。 4 个字符。

为什么输入mysql的数据是乱码
安装数据库时,更改字符编码。打开mysql安装目录,找到my.ini文件,用记事本打开,将里面的default-character-set=latin1修改为gbk。请注意,有两件事需要调整。
编辑数据库实例中的编码,打开data文件夹,找到对应的数据库实例,编辑里面的db.opt文件,将字符编码改为gbk如图。
如果要修改数据库实例编码,也可以直接通过navicat for mysql客户端进行更改。右键单击数据库实例--属性--选择字符编码。
重新启动数据库。使用cmd重启数据库使其生效。
更改encoding中连接字符串的字符编码,在连接字符串后面添加useUnicode=truecharacterEncoding=gbk。
6
测试数据是否正常。重新插入数据库数据,你会发现汉字不会出现乱码了。
MySQL插入数据时遇到中文乱码怎么办
先写数据库测试,然后写表,最后插入你要写的“工资”字段。出现乱码。只需
1。启动MySQL,输入 ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 并将测试数据库的编码设置为utf8。
2。修改表的编码: ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 上述命令用于将表category的编码更改为utf8。
3。编辑字段编码:直接在MySQL中右键单击表,然后单击编辑表,编辑或输入代码: ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR ( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 。 4. 需要删除之前插入的字段,然后重新导入之前的字段
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
