博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
phpmyadmin mysql字符集_搞定MySQL与phpMyAdmin数据库的字符串乱码问题
阅读量:6514 次
发布时间:2019-06-24

本文共 1083 字,大约阅读时间需要 3 分钟。

网上有很多网友都说MySQL里面的中文乱码问题特别的烦人,我也是这样觉得的,我打算从一开始就让网站全部采用Unicode(UTF-8)编码的,认为这样才规范。

然而后来发现,光光在建立数据库或者建立数据表的时候采用设定在SQL语句里面的

CHARACTERSET'utf8'COLLATE'utf8_unicode_ci'

这样的方法,是不完美的,虽然说这样能够让我的数据在自己的网页里面正常显示多国语言文字,但是无论用phpMyAdmin还是命令行方式mysql程序显示得到的数据都是非拉丁文字部分乱码(对于我们来说,大多数就是汉字变成乱码了,当然)。

究其原因,原来是MySQL对于字符集的支持有四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection),可见MySQL(4.0+版本)在设计的时候在对于多语言的支持就是不错的,只能怪我们没有仔细设置了(要么或者说它设置太复杂了,呵呵)。

知道这个,那么问题的原因就简单了,现在我们的程序(网页)是UTF-8的,同时连接层的是latin1(MySQL的默认设置),然后数据库的又是utf8的,然后,我们从数据库取数据,原来utf8格式的字符被latin1的连接层一处理,不是拉丁文的部分全部变成“?”字符,然后当然显示到网页的还是“?”。这样就有乱码了。

那应该怎么解决呢?其实只要改改设置,还有在数据库操作的时候注意一个小问题就可以了。

首先要设置my.ini文件,添加下面的内容就是了,当然确保数据库设置为utf8和utf8_unicode_ci。

[client]

default-character-set= utf8

[mysqld]

default-character-set= utf8

default-collation= utf8_unicode_ci

[mysql]

default-character-set= utf8

然后,还要在连接数据库完成的时候设置client character set,比如用mysqli的时候就是要

$mConn =newmysqli();

$mConn->connect(/*...*/);

$mConn->set_charset('utf8');

//...

当然mysql库也有相应的函数,就是mysql_set_charset,方法类似。

即使在mysql_conn()之后加上mysql_set_charset('utf8');

这样,就完美解决了phpMyAdmin和MySQL的乱码问题。

转载地址:http://gvifo.baihongyu.com/

你可能感兴趣的文章
PHP获取Cookie模拟登录CURL(转)
查看>>
PHP-权限控制类(转)
查看>>
CSS3秘笈第三版涵盖HTML5学习笔记9~12章
查看>>
bzoj1044木棍分割
查看>>
leetcode-136-Single Number
查看>>
http服务器小项目
查看>>
一些数学上的名词及操作
查看>>
<%@ include %>指令和<jsp:include>区别
查看>>
因为文件组 'PRIMARY' 已满 解决办法
查看>>
Flume 读取实时更新的日志文件
查看>>
HDU 2049
查看>>
《Spring1之第十次站立会议》
查看>>
Unity Shader 噪声消融特效 - 剑灵死亡特效
查看>>
Eclipse 自动生成 Ant的Build.xml 配置文件
查看>>
添加一条信息到列表,如果重复就替换,
查看>>
C#基础第五天
查看>>
python 小数相加报错 invalid literal for int() with base 10
查看>>
【ubuntu】linux链接库
查看>>
uva 12325 枚举暴力 b
查看>>
多线程问题(JVM重排序)
查看>>