返回顶部
首页 > 资讯 > 数据库 >mysql字符转化出现乱码的原因
  • 888
分享到

mysql字符转化出现乱码的原因

2024-04-02 19:04:59 888人浏览 独家记忆
摘要

这篇文章主要介绍“Mysql字符转化出现乱码的原因”,在日常操作中,相信很多人在mysql字符转化出现乱码的原因问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql字符转

这篇文章主要介绍“Mysql字符转化出现乱码的原因”,在日常操作中,相信很多人在mysql字符转化出现乱码的原因问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql字符转化出现乱码的原因”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

mysql中存入数据时发生的编码转换过程:
1、在终端(Terminal,可以是bash窗口,也可以是客户端工具如navicat)中输入,输入的内容由Terminal根据其自己的字符进行编码。
2、经Terminal编码后的二进制流被传输到mySQL Server。mysql server(mysql engine)根据参数character_set_client的字符设置来对该二进制流进行解码。
3、解码之后,mysql server再次根据目的表,即table的字符集来判断是否需要字符编码转换。如果character_set_client的字符设置和table定义时的character设置一致,则无需字符编码转换。否则进行转换,然后将转换后的二进制流存放到数据文件(file)中去。
总结:client ------> server(engine) -----> file     需要经过三次编码,两次编码转化。

mysql中取出数据时发生的编码转换过程:
1、从数据文件(file)中读出二进制数据流,将该数据流根据table定义时的character设置来进行解码。
2、在用table character对二级制数据流进行解码之后,在mysql engine(mysql server)中,需要根据参数character_set_client的字符集设置对解码后的数据库流再一次进行编码,将编码之后的二级制数据库流传输到client端。
3、client端,即终端(Terminal)根据其自己的字符集编码来展示查询结果。
总结:  file ------> server(engine) -----> client  需要经过三次编码,两次编码转化。

可能会有些疑问,在上面的分析中,数据都是以二进制流的方式在各个节点之间流动的。那么为什么需要编码转化了?
1、client 和 server(engine) 之间的转换,或者说编解码是为了对传进来的二进制流做语法和词法解析,否则你不会知道传进来的是insert还是update。
2、file 和 server(engine) 之间的转换是为了在从数据文件读入数据后,在存储引擎内部进行字符级别的操作。

经过以上分析,应该很快发现导致乱码出现的原因是有以下几种:
1、数据在存入的时候和取出的时候,编码不一致。比如存入时用的utf8,取出时用的GBK。
2、编码转换不是无损编码转换导致乱码出现。比如clien是utf8,mysql server中的character_set_client设置为gbk,表结构的字符集设置为utf8。这里会有两次编码转化,client到server时,utf8要转为gbk,然后server到file时,gbk要转为utf8。由于gbk到utf8是有损编码转化,导致了乱码出现。

无损编码转换:假设我们要把用编码A表示的字符X,转化为编码B的表示形式,而编码B的字形集中并没有X这个字符,那么此时我们就称这个转换是有损的。
但不是任何两种字符集编码之间的转换都是有损,转换是否有损取决于以下几点:
------被转换的字符是否同时在两个字符集中
------标字符集是否能够对不支持字符,保留其原有表达形式。(比如latin1在遇到自己无法表示的字符时,会保留原字符集的编码数据,并跳过忽略该字符进而处理后面的数据。)

因此只要客户端,MySQL Server的character-set-client,table charset的三个字符集完全一致就可以保证一定不会有乱码出现了。

到此,关于“mysql字符转化出现乱码的原因”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: mysql字符转化出现乱码的原因

本文链接: https://lsjlt.com/news/60985.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql字符转化出现乱码的原因
    这篇文章主要介绍“mysql字符转化出现乱码的原因”,在日常操作中,相信很多人在mysql字符转化出现乱码的原因问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql字符转...
    99+
    2024-04-02
  • mysql出现乱码的原因有哪些
    数据库字符集设置不正确:数据库字符集和连接字符集设置不一致会导致乱码。 数据库表字符集设置不正确:数据表字符集和字段字符集设...
    99+
    2024-04-09
    mysql
  • Mysql字符集设置乱码的原因有哪些
    这篇文章主要介绍了Mysql字符集设置乱码的原因有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基本概念• 字符(Character)是...
    99+
    2024-04-02
  • MySQL出现乱码的原因及解决方法
    本篇内容主要讲解“MySQL出现乱码的原因及解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL出现乱码的原因及解决方法”吧!MySQL出现乱码的原...
    99+
    2024-04-02
  • java中的字符出现乱码
    原因:编解码不一致导致字符乱码。首先,我们可以通过调用java.nio.charset.Charset.defaultCharset()获得系统的默认字符集,中文Windows系统都是GBK,所以JVM默认都是以GBK字符集来进行编解码。相...
    99+
    2019-11-18
    java 字符 乱码
  • html文字会乱码的原因
    这篇文章给大家分享的是有关html文字会乱码的原因的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。html文字乱码的原因:1、网页是gbk编码,html文档是utf-8编码,编码方式不一致导致乱码;2、html网页...
    99+
    2023-06-14
  • java中的字符串总是出现乱码
    问题描述:在TOMCAT里经常出现这种情况:我们输入的字符串是汉字(默认的编码是GBK),但是TOMCAT默认的是ISO8859-1编码,于是存在了错误,导致了乱码的产生。解决办法:将从Tomcat得到的字符串再次利用ISO8859-1将其...
    99+
    2022-04-07
    java 字符串 乱码
  • Android字符串和十六进制相互转化出现的中文乱码问题
    废话不读说了,直接给大家贴代码了,代码附有注释,可以说明一切,本文写的不好,还请见谅。 import java.io.ByteArrayOutputStream; publ...
    99+
    2022-06-06
    乱码 进制 十六进制 Android
  • php出现gd2中文乱码的原因有哪些
    这篇文章主要介绍php出现gd2中文乱码的原因有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php出现gd2中文乱码的原因:1、服务器的编码与gd2中的“imagettftext()”函数的默认编码不同,函数默...
    99+
    2023-06-14
  • mysql 乱码字符 latin1 characters 转换为 UTF8详情
    背景:目前正在进行业务重构,需要对使用MySQL的业务库表进行重新设计,在迁移时,遇到了中文字符乱码问题(源库表的默认编码是LATIN1,新库表的默认编码为UTF8),故重新学习了下...
    99+
    2024-04-02
  • java出现乱码的原因与解决方法详解
    java在字符串中统一用Unicode表示。(推荐:java视频教程)对于任意一个字符串:String string = “测试字符串”;如果源文件是GBK编码,操作系统默认环境编码也为GBK,那么编译的时候,JVM将按照GBK编码将字节数...
    99+
    2017-02-06
    java基础 java 乱码
  • PHP字符集编码出现乱码怎么解决
    这篇文章主要讲解了“PHP字符集编码出现乱码怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP字符集编码出现乱码怎么解决”吧!要么页面原始汉字和从数据库里取出的汉字全是乱码;要么原...
    99+
    2023-06-17
  • 浅析PHP输出汉字乱码的原因及解决方法
    PHP是一种开源的服务器端脚本语言,被广泛应用于Web开发。但是,在进行中文字符的输出时,经常会发生字符集转换的问题而出现乱码,这是让许多开发人员头疼的问题。本文将介绍PHP输出汉字乱码的原因及解决方法。原因分析在PHP中,字符编码主要有两...
    99+
    2023-05-14
    php 乱码
  • php 16进制转字符串出现中文乱码怎么解决
    在使用 PHP 进行 16 进制转字符串操作时,有时会出现中文乱码的问题。这个问题可能出现在很多情况下,比如从数据库中读取数据时,或者是接受用户输入时。本文将介绍一些常见的中文乱码问题,并提供一些解决方法。从数据库中读取数据时出现中文乱码如...
    99+
    2023-05-14
    php
  • php 16进制转字符串出现中文乱码如何解决
    本篇内容介绍了“php 16进制转字符串出现中文乱码如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!从数据库中读取数据时出现中文乱码如...
    99+
    2023-07-05
  • 解决PHP中16进制转字符串出现中文乱码的方法
    解决PHP中16进制转字符串出现中文乱码的方法 在PHP编程中,有时候我们会遇到需要将16进制表示的字符串转换为正常的中文字符的情况。然而,在进行这个转换的过程中,有时会遇到中文乱码的...
    99+
    2024-03-04
    php 字符串 进制
  • php怎么实现字符串无乱码翻转
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php怎么实现字符串无乱码翻转PHP中实现中文字符串反转避免乱码的方法 : 今天博主在网上看PHP面试题的时候,看到了这么一个问题,如何实现字符串反转,当时想不是有一...
    99+
    2016-11-27
    php 翻转
  • php如何实现字符串无乱码翻转
    这篇文章主要讲解了“php如何实现字符串无乱码翻转”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何实现字符串无乱码翻转”吧!php实现字符串无乱码翻转的方法:1、创建一个PHP示例文...
    99+
    2023-06-25
  • php页面字符出现乱码如何解决
    要解决 PHP 页面字符乱码问题,可以尝试以下几种方法:1. 设置字符编码:在 PHP 页面的头部添加以下代码,指定页面的字符编码为...
    99+
    2023-08-19
    php
  • mysql乱码现象及对字符集的理解
    数据库版本是5.7.17 现象1 Navicat Premium导sqlserver数据到mysql时,发现一些表只导了表结构没有导入数据,一些表导入了部分数据,一些表数据全部导入成功 查找原因: 1....
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作