当前位置:首页 > 日记 > 正文

MySQL的中文UTF8乱码问题

MySQL的中文UTF8乱码问题
MySQL支持Unicode编码后,为了跟上时代的步伐,我们的网站程序也开始考虑使用utf8的。事实上,utf8也已经使用了好几年,程序可以运行基本上没有大的问题,但数据改变时,总是会遇到不愉快的事情。

{问题现象}

xxx.php EditPlus保存为UTF8格式,MySQL设置默认字符集= utf8在my.ini,与创建的表` XXX(名字` varchar(255))= MyISAM引擎默认的字符集utf8,xxx.php执行插入/更新/选择似乎是没有问题的,但phpMyAdmin选择是乱码,与第三方工具软件(如SQLyog)在选择是乱码,mysqldump是乱码,很不舒服。当然,如果你选择二进制 / / varbinary BLOB类型当你建立的表,你不会找到乱码,因为指定的一个二进制保存,并没有编码的概念,当MySQL保存数据。

{查找问题}

虽然默认字符集= utf8设置my.ini,有新发现时,执行如下命令:
MySQL >显示变量like'character %;

+ ---------------------------------------- + -------------------------

| variable_name |价值

+ ---------------------------------------- + -------------------------

| character_set_client | latin1

| character_set_connection | latin1

| character_set_database | UTF8

| character_set_filesystem |二进制

| character_set_results | latin1

| character_set_server | UTF8

| character_set_system | UTF8

| character_sets_dir | D: 共享MySQL字符集

+ ---------------------------------------- + -------------------------

8行(0秒)
MySQL >显示变量like'collation_ %;

+ --------------------------------------- + ------------------

| variable_name |价值

+ --------------------------------------- + ------------------

| collation_connection | latin1_swedish_ci

| collation_database | utf8_general_ci

| collation_server | utf8_general_ci

+ -------------------------------------- + ------------------

3行(0秒)

发现价值列不都是UTF8,还有latin1的某些部分,如客户端连接。工作过程是这样的:xxx.php:从xxx.php页输入汉字,因为xxx.php是UTF8编码,所以,xxx.php UTF8格式转换为文本输入汉字,然后提交给MySQL,但MySQL客户端连接latin1,和桌子是UTF8,所以MySQL存储,xxx.php首次提出汉字转换成latin1格式,然后转成utf8字符格式的表。如果我们使用第三方软件或phpMyAdmin去选择看这表,在表中存储的数据是UTF8字符,通过latin1。出来的时候,它是采取UTF8格式。当然,它看起来是随机的。解决的办法是使所有进程UTF8。

{解决问题}

1。从my.ini
{客户}

默认字符集= utf8

{ MySQL }

默认字符集= utf8

{他}

默认字符集= utf8

以上3部分要添加默认字符集= UTF8,通常我们可以只添加一个mysqld。

然后重新启动MySQL,执行

MySQL >显示变量like'character %;

MySQL >显示变量like'collation_ %;

确保所有的物品价值是UTF8。

2、当建表是用UTF8,表的字段的排序规则不能增加,而默认是没有时间utf8_general_ci。
创建表(` tablename4 `

` ID ` int(11)不为空auto_increment,

` varchar1 ` varchar(255)默认为空,

` varbinary1 ` varbinary(255)默认为空,

主键(id)

)= MyISAM引擎默认的字符集utf8
3、xxx.php保存UTF8编码的标题,最好加

头('conten-type:文本/ HTML;字符集= UTF-8);

执行CRUD操作之前执行它

mysql_query(SET NAMES UTF8);

测试代码xxx.php如下:
< PHP

头('conten-type:文本/ HTML;字符集= UTF-8);

mysql_connect(localhost

mysql_select_db(测试);

mysql_query(SET NAMES UTF8);

$str =CHN软体开发资讯公司,JPN,评估人类发展公司,韩国,俄罗斯,还有一些来自T,M. M从C·节能E C E确定现场的第一部分(时间);

为SQL =插入tablename4(varchar1,varbinary1)值(,、结构元。和美元);

sql $。;

mysql_query($ SQL);
结果= mysql_query美元(选择ID,varchar1,varbinary1从tablename4 );

而($行= mysql_fetch_array(美元的结果,mysql_both)){

printf(ID:%s,varchar1:%s,varbinary1:%s

}
mysql_free_result($结果);

>

这样设置后,它被插入在PHP页面的任何字符UTF8,带它的PHP页面,在phpMyAdmin,取出MySQL第三方客户端软件,是相同的汉字,从来没有发现也是乱码,就中国characters.ok,问题就解决了。

{等}在中文Windows系统,在cmd.exe运行mysql.exe字符终端,不能使用上述规则,因为默认情况下,中文Windows系统cmd.exe代码页cp936或GBK,显示所有utf8的字符,所以垃圾是正常现象,在字符终端不奇怪,这个问题可以解决在shell终端在UNIX系统。

相关文章

我是歌手2,火灾的升级,邓紫棋偷偷喜

我是歌手2,火灾的升级,邓紫棋偷偷喜

暴露,升级,我是,火灾,歌手,我在第二季度爆发的赛季接近一个歌手,随着战争的升级,该节目的歌手也要拥抱用尽所有的技能,国王;称号。但不管谁获得最后的冠军不可否认我们的巨肺;;小天后邓紫棋在这季的比赛从内地没有多少人知道他们的流行歌手,有人说…

挂载命令使用技巧

挂载命令使用技巧

命令,使用技巧,电脑软件,审查:1。安装光盘 U3000 U3000 安装盘的命令如下: U3000 U3000 #山- T是09660 / dev /光盘 / mnt /光盘 U3000 U3000 这个命令安装光盘 / mnt /光盘目录,使用LS / mnt / cdrom命令可以显示在光盘上的数据和文件。 U300…

在Linux服务器上备份时需要考虑的

在Linux服务器上备份时需要考虑的

服务,备份,时需,器上,细节,评论:如果你每天都进行一般备份,你将有助于减少文件的丢失和增加恢复的程度。接下来,我们将介绍在Linux服务器上进行备份时需要考虑的因素。 如果你是一个普通的备份,每天(至少要经常修改用户文件),你将有助于减少文件…

迅雷:打造全球最大的云加速服务平台

迅雷:打造全球最大的云加速服务平台

迅雷,全球最大,服务平台,电脑软件,信息集成技术,如果小米注资迅雷2亿美元实现互联互通更完美的帮助小米硬件,然后雷声,是帮助插上一双翅膀,在梦想和抱负会实现的领域中,迅雷的云服务了这么多年,这是构建全球最大的云加速服务平台。 为什么迅雷对…

安全配置服务器

安全配置服务器

服务器,配置,电脑软件,一、版本的选择 我强烈建议如果语言不是障碍,请使用英文版的。你知道,微软的产品是漏洞补丁(Bug补丁)众所周知,中国版本的bug是远远超过英文版和补丁一般会至少半个月后(即通用微软宣布你的服务器的漏洞后,会在受保护的状态…

PHP数组的合并、拆分和区分功能集

PHP数组的合并、拆分和区分功能集

拆分,数组,合并,功能,电脑软件,组合数组有三个函数: 1.array_combine() 携带两参数数组的参数数组的值是新数组的键,和参数数组的两值的新数组的值。很简单u3002 实例uff1a 复制代码代码如下所示: 美元=阵列(‘绿色',',''); $ =阵列('avocado…

安装Office1719在win7下的误差原因

安装Office1719在win7下的误差原因

误差,解决方法,安装,原因,电脑软件,注释:在Windows 7上安装Office 2010,如果出现错误1719:无法访问Windows安装程序服务,此错误声明是由于Windows安装程序的问题,可以通过以下方法解决。 在Windows 7下安装Office 2010,如果出现错误1719,无法访问W…

PHPvisitfile()遍历指定文件夹功能

PHPvisitfile()遍历指定文件夹功能

遍历,功能,电脑软件,PHPvisitfile,注:visitfile()有少量修改 复制代码代码如下所示: 指定文件夹文件 为文件列表=阵(); 功能visitfile($路径) { 全球$文件列表; $路径= str_replace( 美元($路径)FDIR = dir; 而((文件)= $ FDIR ->读(假)= =!) { 如果(文件= = = …

什么inorpc.exe过程是否有什么关系

什么inorpc.exe过程是否有什么关系

文件,过程,有什么关系,电脑软件,inorpc,点评:对于inorpc.exe -详细的注释inorpc过程 进程文件:inorpc或InoRpc.exe 进程名称:eTrust Antivirus组件 过程类别:安全风险的过程 英文描述: inorpc.exe是与eTrust Antivirus杀毒电脑,相关的过程,它也…

让电脑开机进入Win8传统桌面的方法

让电脑开机进入Win8传统桌面的方法

方法,方案,桌面,传统,电脑软件,问题: 在Win8系统默认的是地铁补丁界面。每次你想进入传统的桌面,你需要点击桌面图标或按下Win按钮。感觉有点麻烦。使计算机进入Win8传统桌面的时候,它开始的方式是什么 答案uff1a 有一种方法来设置SCF文件。…

PowerPoint2010直接将PPT转换成视

PowerPoint2010直接将PPT转换成视

转换成,视频文件,电脑软件,文件转换成,视频,第一页PPT到视频的基本步骤 更多有趣的文章推荐: 将PowerPoint演示文档转换成在线视频并与多人共享 在PowerPoint2007中插入视频的方法 把PowerPoint演示文稿放到一个视频文件中,随身携带。 单…

Linux文本处理工具包

Linux文本处理工具包

文本处理,电脑软件,Linux,点评:Linux的操作习惯与Windows有一个窗口进行操作,它是一个很大的不同,本文将介绍最常用的文字处理工具,使用Linux下的shell:发现,grep,xargs,排序,uniq,TR,剪切,粘贴,WC,sed,awk 所提供的示例和参数是最常用和最实用的。 我使用…