问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

你的phpmyadmin中文乱码怎么解决的,请教了,谢谢

发布网友 发布时间:2022-04-08 06:37

我来回答

2个回答

懂视网 时间:2022-04-08 10:59

  mysql中文乱码问题一直每次迁移一次数据库就要从头解决一遍,因为数据库建好以后就不会怎么动了,一直没当回事儿,反正就麻烦一次吗。最近服务器遇到了点问题,重装了几次,结果每次都要重新配置这个问题,索性就总结一下。

 

  首先中文乱码的根本问题就是编码问题:我们把中文输入到数据库中再从数据库中取出来显式在浏览器上分为几个过程,这些过程中要求每一个处理过程的编码都是要支持中文的,而且如果前后两个过程如果编码方式不一样的话,必须要有转码的手段。比如说你用gbk的编码方式在本地写好了一段中文,或者说是.sql脚本,上传服务器后执行,如果你的mysql默认以utf8的编码读取你的sql语句的话,那么中文就是乱码了。(没有测试过,说不准gbk和utf8是兼容的或者是mysql默认会通过unicode转码。不过大致就是这个意思)。可以想象如果所有的过程之间都要检查编码问题是非常繁琐的,所以最好的解决方案,就是选择一种编码,然后在所有的过程中都使用这种编码,这样就不用担心编码转换问题了。

  然后说一下mysql中关于编码的规则,mysql中对每个数据库,每个数据库中的每个表,每个表中的每个字段都有关于编码的设置变量,(记得好像是可以在mysql中用sql语句:show variables like “%char%”)查到。这些变量的优先级是从小到大排列的。也就是说如果你设置一个testdb数据库的默认编码是latin的,那么在你新建一个表(不声明编码方式)以后,这个表的所有字段的编码都是latin的,但是你可以新建一个其他编码方式(比如说utf8)的表,做法就是在建表的时候显式的声明用的是什么编码。这样就可以再一个数据库中同时存在latin编码的和utf8编码方式的表了。同样的规则也可以应用在表和表中的字段上。

  最开始就是这里耽误了很长时间,因为自己明明已经把数据库的编码方式改为utf8的了,但还是显示乱码,一直以为是哪里编码不统一,检查了好几遍。问题是因为这个表是在修改数据库默认编码之前建立的,所以这个表的默认编码还是latin的,同样这个表中的字段也是默认为latin的。所以除了需要修改数据库的默认编码以外还需要修改表的默认编码,然后还需要修改字段的默认编码。当然如果你的数据库中只有一个表是需要中文的,那么你只要在建立表的时候修改它的默认编码就好了。但是如果你先建立的这个表再去修改表的默认编码是没有用的,因为表中的字段的编码是根据表建立的时候所确定的。所以说对于已经建立好的表,想要修改其中字段的编码不仅需要修改表的默认编码,还需要修改具体字段的编码。

  这里我用phpmyadmin作为例子来说明一下对于已经建立好的表怎么让其支持中文:

在phpmyadmin中,“默认排序方式”就是默认编码的意思,我也不知道为什么这么说。。。

首先我们看到mysql的默认编码是什么,关于编码有好几个变量,每个变量负责的功能不一样,具体的介绍点击那个问号就可以有mysql的官方解释了,或者自己去查一下mysql的手册就好了

技术分享

在这种默认编码的情况下我们新建一个数据库test:

技术分享

我们这里不选择编码方式也就是“排序规则”

然后新建一个表:

技术分享

同样也不选择编码方式

然后插入一条有中文的记录:

技术分享

就会出现乱码了:

技术分享技术分享

原因是默认情况下name字段的编码是这种:

技术分享

我也不清楚为什么从latin1变成了cp1250_bin可能是mysql中其他的设置里有规定吧。。。。。。

我们改掉这个编码:

技术分享

再插入一条中文的记录:

技术分享

可以看到解决了。

现在我们换个思路:改掉test数据库的默认编码:

技术分享

重新建立一个表testtable2:

技术分享

可以看到这个testtable2的编码已经变成utf8的了。

同样插入一条中文记录,可以看到问题也解决了:

技术分享

 

总结一下吧:虽然现在很多数据库管理工具都可以支持边开发,边修改数据库。但是在新建数据库的时候还是应该大致思考一下数据库的性质,表之间的依赖关系等等。否则以调试程序的方式来调试数据库效率太低。

mysql中文乱码问题,phpmyadmin操作解决方法

标签:

热心网友 时间:2022-04-08 08:07

有乱码问题归结到字符编码的问题。
php很久没用了
你在使用哪个phpmyadmin的时候,每个字段,包括整个数据表项的字符编码格式设置对了。
设置为哪种?那要看你的PHP文档时什么编码,还有,你的php文档对应的html文件头是什么编码。任何一个出错,都会产生乱码问题。如果,你是直接用记事本编辑过PHP文档,那么,请选择,文件--另存为--下面选择保存类型以及编码格式,选utf-8
然后,要么直接在记事本中改,要么用dw打开编辑,只要是规范的html前面肯定有个<meta
charset=******">什么的,这里就改charset=utf-8",这样在phpmyadmin里也用utf-8。
当然也可以用gb2312,那样的话,按照上面步骤,每个地方都改过来。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 be worthwhile doing 还是to do 还有相关的worth worthy 的用法 如何,快速记忆?(如背单词)拜托各位大神 如和记住英文单词? 英语中怎么根据读音记单词? 护士的英语发音怎么读 英语转化词有哪些 it serves you right是什么意思 book与reserve作为“预订”时,怎样区分? 为什么desert跟deserve的首读音不一样?就是这2个单词里“de”的读音,后面都是ser deserve doing,deserve to do怎么用 dessert沙漠的读音是什么? 梦到自己向别人借钱,别人却只把自己身上一半的钱借给自己,会预示着什么? 做梦见向亲戚借钱钱没借着把两个水桶拿去了 用php将中文写入mysql,在phpmyadmin中查看显示为乱码,求解决方法!! 手绘房屋户型图怎样画,求指教... 外地户口可以在青海互助申请公租房吗 外地户口能申请公租房吗? 外地工作如何申啨户藉地公租房? 周公解梦 考生梦见负重爬坡 我们都是婚外情,为什么他当着老婆的面给我发微信还语音,他是真的爱我吗? “青”加上偏旁可以组成哪些词语? 青加偏旁组成新字有哪些? 青字加偏旁组词 青如何加偏旁后再组一个词? 青加偏旁组字并组词 以青加偏旁组字 青能加什么偏旁 组什么词 “青”可以加什么偏旁? 给青字加偏旁并组词:青加什么旁可以组 小霸王d101c专用卡是什么电视游戏机,市场8位黄卡用不了,专用它的卡带 “青”字加上不同的偏旁组成哪些词? 请问图片里的女主角名称? YY一件是一个什么样的平台? 电影中的情节出现在我身上 。回答“じ沫沫oニ ”。和“毛绒绒的小麻烦” 请问惠普笔记本的d101tx,a0O1tx中的d和a有什么区别? 海鸥手表d101和362有什么区别 _百度问一问 树脂d101和d301的区别 有谁知道大孔树脂D101和AB-8的区别 笔记本电脑,惠普CQ15_a101tx 和 惠普15-d101tx有何区别啊??