mysqlvarbinary乱码mysql乱码产生原因mobcaa的技术博客

MySQL 字符编码是版本4.1引入的,支持多国语言,而且一些特性已经超过了其它大多数数据库管理系统。正因为这一特性才导致 MySQL 的乱码问题。

字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。让我们使用一个假想字符集的例子来区别清楚。

假设我们有一个字母表使用了四个字母:‘A’、‘B’、‘a’、‘b’。我们为每个字母赋予一个数值:‘A’=0,‘B’= 1,‘a’= 2,‘b’= 3。字母‘A’是一个符号,数字0是‘A’的编码,这四个字母和它们的编码组合在一起是一个字符集。

假设我们希望比较两个字符串的值(在if……else语句中我们经常做值的比较):‘A’和‘B’。比较的最简单的方法是查找编码:‘A’为0,‘B’为1。因为0 小于1,我们可以说‘A’小于‘B’。我们做的仅仅是在我们的字符集上应用了一个校对规则。校对规则是一套规则(在这种情况下仅仅是一套规则):“对编码进行比较。”我们称这种全部可能的规则中的最简单的校对规则为一个binary(二元)校对规则。

但是,如果我们希望小写字母和大写字母是等价的,应该怎样?那么,我们将至少有两个规则:(1)把小写字母‘a’和‘b’视为与‘A’和‘B’等价;(2)然后比较编码。我们称这是一个大小写不敏感的校对规则。比二元校对规则复杂一些。

在实际生活中,大多数字符集有许多字符:不仅仅是‘A’和‘B’,而是整个字母表,有时候有许多种字母表,或者一个东方的(比如中文、日文、韩文、藏文、泰文等等)使用上千个字符的书写系统,还有许多特殊符号和标点符号。并且在实际生活中,大多数校对规则有许多个规则:不仅仅是大小写不敏感,还包括重音符不敏感(“重音符” 是附属于一个字母的符号,象德语的‘?’符号)和多字节映射(例如,作为规则‘?’=‘OE’就是两个德语校对规则的一种)。

MySQL 4.1.x开始支持以下这些事情

l 使用多种字符集(Character Set)来存储字符

l 使用多种校对规则(Collation)来比较字符串

l 在同一台服务器、同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合字符串

l 允许定义任何级别的字符集和校对规则

MySQL 4.1及以上版本的字符集支持(Character Set Support)有两个方面:字符集(Character Set)和校对规则(Collation)。 字符集和校对规则有4个级别的默认设置:服务器(server),数据库(database),数据表(table)和连接(connection)。

MySQL 中是根据下面几个变量确定服务器端和客户端用的什么字符集:

MySQL的字符集处理是这样的:

1、发送请求。

1)客户端发送请求到服务器端。

2)服务器端会把请求的数据从客户端字符集(character_set_client)转成服务器连接字符集(character_set_connection)。

3)然後服务器会检测存储区域(table,column)的字符集,然后把数据从连接字符集(character_set_connection)转为存储区域(table,column)的字符集,然後再存储或者查询。

2、返回请求。

1)服务器将存储区域(table,column)的字符集转换成服务器连接字符集(character_set_connection)。

2)将服务器连接字符集(character_set_connection)转换成结果字符集(character_set_results),再发送到客户端。

例如,我建立一个字符集为 gbk 的数据库(服务器端)。(MySQL 4.1 开始,在建立数据库时要指定它的字符集和校对规则,不指定就用默认的字符集和校对规则。)

连接数据库的程序(客户端)使用 gb2312 字符集(如 windows 命令行下使用 MySQL ,或者 PHP 连接MySQL ),那么在执行 insert 命令时,insert 的字符串将做一个 gb2312 到 gbk 的转换。而 select 时,数据库中保存的数据会先经过 gbk 到 gb2312 的转换之后再给你(结果集)。

好,那么为什么升级3.23(或4.0)到4.1时会乱码?举个例子说明。

例如3.23的数据库中保存的是gbk编码的数据。升级之前我将这些数据导出保存到文件里,这个文件的编码当然也是gbk的(因为3.23不支持多语言,不会对数据进行转换,也就是前面说的“原封不动地保存,原封不动地读出”)。

然后我在4.1中建立一个数据库,字符集为A;客户端字符集为B。将刚才的gbk数据导入。

1)A=gbk,B=gbk

导入数据时数据不会被转换;读出时需要set names gbk(set name命令下面将讲解)。

2)A=latin1,B=gbk

导入数据会进行gbk->latin1的转换,可能会丢失数据,产生乱码。

3)A=gbk,B=latin1

导入数据会进行latin1->gbk转换,可能会产生乱码。

4)A=latin1,B=latin1

导入数据时不会进行转换;读出时不需要set names gbk 。

大家可以看到,上面1)、4)才是正确的做法,即让A和B使用同样的字符集才不会乱码。

Linux删除乱码文件

通过 css 来实现一段不停变化的 bug 乱码效果。

MySQL出现乱码的原因要了解为什么会出现乱码,我们就先

在安装jforum和ssh整合时,用到mysql都出现汉字乱码,试了许多情况,最后方便,会出现在选 择utf8时,没有选中要设置 的选 项。

MySQL中文乱码,phpmyadmin乱码,php乱码 产生原因及其解决方法近日发现很多人为MySQL中文乱码问题所困扰。于是就这个问题做一下浅析。不正确的地方希望大家指正作者:我不是鱼乱码产生原因 mysql字符编码是版本4.1引入的,支持多国语言,而且一些特性已经超过了其他的数据库系统。我们可以在MySQL Command Line Client 下输入如下命令查看mysql的字符集mysq

现象:    mysql的默认编码设置为utf-8,页面以utf-8的编码方式写入到数据库。用工具查看一切正常,但从mysql的命令行读数据出来总是乱码。原因:    mysql的客户端根本无法以utf-8的形式返回数据。windows下命令行的默认属性为GBK。mysql中关于字符集的种类有很多,对我们编程有影响的主要是客户端字符集(character_set_client)和数据库字符集(ch

Mysql中文乱码问题之前被mysql中总是出现中文乱码搞得云里雾里,在网上也搜了些相关资料,可结果更让我觉得字符集的转换是相当复杂,甚至有了抵触心理,不过还好在最后搜到几篇经典的文章,经过研读总算明白过来!好文章,不敢独享,现将文章稍作整理与大家分享。mysql中文乱码原因剖析:对编程有影响的主要是客户端字符集和数据库字符集,数据库中常用的操作就是保存数据和读取数据,在这个过程中,乱不乱码和数据

MySQL乱码的具体原因和如何设置UTF8数据格式作者:三月本文主要给大家介绍MySQL乱码的具体原因和如何设置UTF8数据格式,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL乱码的具体原因和如何设置UTF8数据格式吧。MySQL使用时,有一件很痛苦的事情肯定是结果乱码。将编码格式都设置为UTF8可以解决这个问题,我们今天来说下为什

GB2312和UTF-8两个字符集的区别: GB2312是标准中文字符集,UTF-8 是UNICODE 的一种变长字符编码,即RFC 3629,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。UTF-8 是字节顺序无关的,它的字节顺序在所有系统中都是一样的,排序更加容易。因此 UTF-8 具有更高的性能。不过如果是纯英文的话,用什么都可以,用GB2312也没问题。 MYSQL+

本文描述了在基于JSP +MySQL构建网站时,发生网页中文显示为乱码情况的解决办法。最终希望使用的编码是:统一的UTF-8编码。试验网站的开发运行环境:OS: Ubuntu 12.04 及 Windows 7IDE: eclipse, Juno Service Release 2Web Server: Tomcat 7.0.27DataBase: MySQL 5.5.29本文的一些观点应该也能

MySQL之所以会乱码,无非是以下几种原因:1、存进数据库之前就乱码2、在存进数据库过程中乱码3、存进数据库后乱码想知道在哪里出现乱码很简单,在后台打印一下就知道了。既然知道问题出在哪里,那解决方法也很简单:1、jsp设置编码是utf-8,保证传到后台的是utf-8的编码2、将传到后台的请求的参数转为utf-8的编码。至于使用哪种方法,可以使用spring的拦截器,也可以自己写一个,也可以手动转换

1.编码的产生:我们的存储的基本单元是一个byte字节,然而人类的语言太多,无法用一个基本单元来表示,然而为了拆分或者一些相应的翻译工作,导致了编码的产生 2.常见的编码格式ASCll :用一个字节的低7位共128个来表示,0-31表示控制字符,32-126表示打印字符, ASCll的二进制第一位也就是最高位,目的是用来做奇偶检验的,所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误

MySQL出现乱码的原因有很多,一般与character_set参数有关。我们先来看看有哪些参数:SHOW VARIABLES LIKE "character%";Variable_name Valuecharacter_set_client utf8character_set_connection utf8character_set_database utf8char

(一)、Mysql自4.1以后,增加了对字符集的支持。笔者之前对Mysql比较了解,刚接触4.1时,感觉Mysql有点多此一举,但后来细想发现,对字符集的支持,虽然对开发者来说,会麻烦一些,但不可否认,是一种进步。对字符集的支持,不仅更加支持多语言,而且,也方便移植。 刚开始使用Mysql4.1,你可能感觉有点不适,下面,简单阐述一下笔者对Mysql4.1字符集的理解,再讲述如何PHP如何适应My

mysql的字符集设置有多个层级,在mysql中存储中文,如果不能正确设置字符集,很容易出现数据乱码。今天就有一个用户反馈他数据库中的数据下午1点多开始出现了乱码。在这里,我分享下具体问题的排查过程,以及解决的办法。(1)  排除客户端设置导致的显示乱码如果用户设置的mysql character_set_client跟客户端显示的字符集不一致,很容易导致中文数据乱码。设置session

随着我国城镇化进程的加速和环保政策的日趋严格,城市及乡镇污水处理厂的稳定运行与高效监管变得至关重要。传统的污水处理厂在安全管理与生产监管方面普遍面临以下痛点: 设备分散,监管困难:厂区范围大,各类池体、泵站、机房等关键设备分布广泛,人工巡检效率低、成本高。 视频系统孤立:可能部署了不同品牌、不同协议 ...

嗨,我是小华同学,专注解锁高效工作与前沿AI工具!每日精选开源技术、实战技巧,助你省时50%、领先他人一步。免费订阅,与10万+技术人共享升级秘籍! n8n-MCP 是 n8n 的“智能中间件”:它向大模型(如 Claude Desktop / Claude Code / Cursor)提供结构 ...

MCP3421是一款18位高精度Σ-Δ模数转换器(ADC),它通过I2C接口与微控制器通信,能够实现高精度的电压测量。基于STM32和MCP3421的电压采集代码,包含初始化和读取数据的步骤,代码基于STM32的HAL库进行开发。 MCP3421与STM32电压采集实现 MCP3421是一款高精度、 ...

THE END
0.B英語B noun /biː/(alsob) Add to word list the secondletterof theEnglishalphabet B,b ‘Beetle’ begins with a B. music the seventhnotein thescaleofCmajor H The nextnoteyou have toplayis a B. the second highestmarkwhich astudentcan get for apieceofworkor in anexamination jvzquC41fkiukxsct{4dcvgtkfmf0xwi1|nu1.J:'C?&;N*G7'>6'K=1'G>&:K*D3'K9'JF';G3&G>*DG'H8'N='CC+:G8g
1.这样就和德语[i:]有点相似了),还有德语字母b([be:])的发标准德语入门教程里,听中国人对[e:]的发音像发汉语拼音的ei,但德国人对[e:]的发音像---把英语短音i发成长音(这样就和德语[i:]有点相似了),还有德语字母b([be:])的发音是 [b]和[e:]拼出来的,那么德语[e:]就该发---把英语短音i发成长音.请问:德语[e:]到底该怎么发音?如ebenjvzquC41sd4{wx~gdcth0lto1zlf/zzguvopp8vwguzjqw4c;9l1;nfg;77548ckig58<69Bg0jvsm
2.德语助手德汉汉德词典B,b是什么意思B,b的中文解释和发音(n) 德语二个字母 用户正在搜索 Hauptserie, Hauptsicherung, Hauptsichtfeld, Hauptsignal, Hauptsitz, Hauptsohle, Hauptsorge, Hauptspanfläche, Hauptspannung, Hauptspannungsachse, 相似单词 B Lieferant, b rbh, b rockwell-b-härte, B Säule, B-), B,b, B., b.a., b.m., B.N.T, 历jvzquC41yy}/ixike0tfv8ikevy0fn4D.d
3.代指字母BWordReference汉by - 描寫數字時用法 乎— Contrarieties between Axel Schuessler (2007) and 汉字源流字典 (2010)? Which is correct? 请确保所有字词拼写正确 (adverb) 访问Chinese 论坛。 帮助WordReference:在论坛上提问。 查看"代指字母 B" 的谷歌机器翻译。jvzquC41yy}/yxwftglftnseg0ipo8jgp5&G=*DD'G4'N;':E+99.J7'CJ&;@*G8'GG'AI'42H&G<*:2'?2
4.矢量图北欧克拉维亚凯尔特字母b向量例证.插画包括有文化矢量图北欧古字字母b 插画 关于 文化, 德国, 神话, 查出, 异端, 独自一个, 哥特式, 神秘主义者, 宗教信仰, 字法, 魔术, 字符, 例证, 异教徒, 奥秘, 扎线, 隐密, 象形文字, 凯尔特, 诗歌, 神奇, 背包, 德语, 时运, 镇痛药, 中世纪, 长辈, 神秘, 信函, 图标, 北欧人 - 2467896jvzquC41ep4etnfouvong7hqo1h.d6nocik36?<:;882
5.ABCD的大小写英文字母怎么写7条回答:【推荐答案】Aa、Bb、Cc、Dd,英文字母26个,大小写都列出来:Aa,Bb,Cc,Dd,Ee,Ff,Gg,Hh,Ii,Jj,Kk,Ll,Mm,Nn,Oo,Pp,Qq,Rr,Ss,Tt,Uu,Vv,Ww,Xx,Yy,Zz顺便科普一波这些字母的来jvzquC41ycv/|xq0eqs/ew4cum5ya<5392<437mvon
6.B字母开头霸气男孩英文名字一、B字母开头霸气男孩英文名推荐 Brandon:源自德语,意为“剑山”,象征着力量和勇气。 Barrett:源自盖尔语,意为“有大担当的人”,体现了领导力和责任感。 Bryce:来源于古法语,意为“狼”,象征着野性和勇敢。 Boris:源自斯拉夫语,意为“保卫者”,寓意保护和领导力。 jvzquC41o0nn|7hqo1wjorsi1{ooi€jpokth1:554:8/j}rn
7.西班牙语重音节规则规律守则情况B:词尾是“其他字母”(除了元音、n、s)——重音在“最后一个音节” 如果单词最后一个字母不是 a/e/i/o/u、n、s(比如 l、r、m、p、b 等),就直接重读“最后一个音节”。 例子来了: hotel(酒店):词尾“l”(不属于情况A),最后一个音节“tel”(ho-tel)——重读“tel”; doctor(医生):词尾 jvzquC41o0wjpzg58;/exr1z{€{z8Xrcpotjhqcpi{bin4955=:27mvon
8.德语写作:信件(B1)Lesen Sie zuerst Variante A und Variante B durch. Schreiben Sie dann zu Variante AoderVariante B nur ein E-Mail. Variante ASituation: Sie haben bei Ihrem letzten Kurs einen sympathischen Kollegen kennengelernt. Sie haben ihn in Ihr Gartenhaus eingeladen. Sie haben folgende Antwort erhaltenjvzquC41o0jpwkfp0eun1wtvg1=46>9:8590
9.帮你彻底理解JS内置对象(二)var strObj = new String('abc')// String {0: "a", 1: "b", 2: "c", length: 3}strObj[1] // "b" 上面代码中,字符串abc对应的字符串对象,有数值键(0、1、2)和length属性,所以可以像数组那样取值。 除了用作构造函数,String对象还可以当作工具方法使用,将任意类型的值转为字符串。 jvzquC41fg|fnxugt0gmk‚zp0eun1jwvkerf1:52;7?3
10.字符(JavaChar)对应的ASCII码大全(十进制0~255)文章浏览阅读1.3w次,点赞10次,收藏15次。本文详细介绍了ASCII和Unicode编码标准,包括十进制、十六进制代码与对应的字符映射,从控制字符到特殊字符,再到字母数字字符,全面覆盖了编码体系的基本构成。jvzquC41dnuh0lxfp0tfv8z234:279871cxuklqg1fkucrqu1;749A<39