解决PHP+mysql处理中文乱码的独家方案

解决PHP+mysql处理中文乱码的独家方案
本方案适用于所有页面文件均为php(已成功测试过),如果有混合文件读者可以亲自测试。

问题现象如下图,1所示为修复过的头部引用文件header.php,中文能正常显示,2所示为未修复过的standard.php页面文件。

一、为了解决问题,首先应该设置数据库的字符编码,如下图所示,本例将所有编码设置为UTF-8。

同样将数据库中的所有表的字符编码设置成UTF-8。

这样,数据库中可以正常显示中文字符了,如下图所示。

如果要导入外来数据,也要设置好字符编码,对于非mysql数据库的导入(如从ACCESS数据库中导入),需要设置分隔字段的字符,然后执行便可,如下图所示。

----------------------------------------
二、数据库的字符编码完成后,便要将页面文件的编码设置好。

这里的要点有如下三点(红色为说明文字):
为了实现上述三点要求,本例采用的方案如下:
1.创建一个数据库连接文件conn.php ,其中在开头设置header 编码,并在创建数据连接后设置SQL 请求的编码,如下图所示:
2.设置页面文件的文件类型。

可以在页面文件中的<head>标签中设置字符编
码。

2.1如果之前的字符编码为gb2312,则该文件类型为ANSI (本例使用DW 和notepad++软件,读者也可用UE 编辑软件,只不过类型显示名称不一样而已),如下图所示:
2.2将<head>标签的编码设置成utf-8并保存文件后,再次打开,会发现文件类型变成了ANSI as UTF-8,如下图所示:
3.在页面的首行引入数据链接文件conn.php,可以保证conn.php中的header 设置字符编码成功有效,否则中文仍会出现乱码,如下图所示:
最后,就完成了字符编码的设置,看看成功后的页面吧(如下图),中文全部正常显示出来了,是不是很神奇,赶快动动手来实现吧!
Ps:另外提一句,如果你想让页面的字符编码设为其他类型(如GBK),则可以按上述方案将所有的编码类型设置为GBK即可。

合集下载

PHP调用MySQL汉字显示为乱码

PHP调用MySQL汉字显示为乱码

PHP调用MySQL汉字显示为?用PHP,看重的是它的功能强大,尝试着联了一下数据库,晕,汉字都变成?了,以前做的时候可没有这种现象,怎么版本高了,倒出问题了。

我以前用的是PHP4,好想是清华大学出版社的,随书带了一张盘,有相关文件,执照书上介绍的方法安装之后一切正常,现在是怎么回事呢?我是在朋友的店里调试的,这没有IIS,我用的是AppServ+Dreamweaver,汉字变?,也许是系统版本的问题,回到家之后,在机器上调试了一下,一切正常,难道只能在IIS上正常显示吗?那不用IIS的就没的玩了。

在网上搜集了许多相关的资料,按照上面介绍的去尝试,终于找到了办法。

有的网友说的对,就是没有把解决的办法说清楚,导致看了也没看懂。

<?php//创建连接$cn=@mysql_connect('localhost','root','**********') or die("不能连接数据库服务器");// 设置显示为GB2312mysql_query("SET NAMES 'GB2312'");$strSQL="select * from table";// 发送strSQL语句$result=mysql_db_query("database",$strSQL,$cn);…………………………………………?>上面红色的那句至关重要,没有它,显示可能就会出问题。

有很多网页都提到了这句,但没有说明它所在的位置,放在<?php 之后是不行的,放在数据库连接语句之后就正常了。

这是我的解决办法,希望大家沟通。

php和mysql中uft-8中文编码乱码的几种解决办法

php和mysql中uft-8中文编码乱码的几种解决办法

php和mysql中uft-8中⽂编码乱码的⼏种解决办法PHP页⾯转UTF-8编码问题1.在代码开始出加⼊⼀⾏:复制代码代码如下:header("Content-Type: text/html;charset=utf-8");2.PHP⽂件编码问题点击编辑器的菜单:“⽂件”->“另存为”,可以看到当前⽂件的编码,确保⽂件编码为:UTF-8,如果是ANSI,需要将编码改成:UTF-8。

3.PHP⽂件头BOM问题:PHP⽂件⼀定不可以有BOM标签否则,会出现session不能使⽤的情况,并有类似的提⽰:Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent这是因为,在执⾏session_start() 的时候,整个页⾯不能有输出,但是当由于前PHP页⾯存在BOM标签,PHP把这个BOM标签当成是输出了,所以就出错了!所以PHP页⾯⼀定要删除BOM标签删除这个BOM标签的⽅法:1.可以⽤Dreamweaver打开⽂件,并重新保存,即可以去除BOM标签!2.可以⽤EditPlus打开⽂件,并在菜单“⾸选项”->“⽂件”->"UTF-8标识",设置为:“总是删除签名”,然后保存⽂件,即可以去除BOM标签!4.PHP以附件形式保存⽂件的时候,UTF-8编码问题:PHP以附件形式保存⽂件,⽂件名必须是GB2312编码,否则,如果⽂件名中有中⽂的话,将是显⽰乱码:如果你的PHP本⾝是UTF-8编码格式的⽂件,需要将⽂件名变量由UTF-8转成GB2312:iconv("UTF-8", "GB2312", "$filename");利⽤程序来实例字符截取⽅法复制代码代码如下:function utf8_substr($str,$len){ for($i=0;$i<$len;$i++) { $temp_str=substr($str,0,1); if(ord($temp_str) > 127){ $i++; if($i<$len){ $new_str[]=substr($str,0,3); $str=substr($str,3); } }else { $new_str[]=substr($str,0,1); $str=substr($str,1); } } return join($new_str);}MYSQL数据库使⽤UTF-8编码的问题1.⽤phpmyadmin创建数据库和数据表创建数据库的时候,请将“整理”设置为:“utf8_general_ci”或执⾏语句:复制代码代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;创建数据表的时候:如果是该字段是存放中⽂的话,则需要将“整理”设置为:“utf8_general_ci”,如果该字段是存放英⽂或数字的话,默认就可以了。

Mysql常见中文乱码及解决方案

Mysql常见中文乱码及解决方案

Mysql常见中⽂乱码及解决⽅案
在Mysql中会经常碰到中⽂乱码问题,与oracle相⽐,不但库拥有字符集,连表,或字段都拥有⾃⼰的字符集
导致我们在查询,新增记录时出现各种各样的乱码,或者是⾃⼰的终端上没有问题,在其它终端连接就会出现问题。

常见乱码分析:
1,登录⽅式,导致的中⽂乱码:
2,操作系统语⾔集:
$ cat /etc/sysconfig/i18n
显⽰UTF-8格式,也可以使⽤:
$ echo $LANG
可以使⽤ export LANG=C 进⾏修改。

但是重新登录后,乱码依然:
3,⽂件格式导致的中⽂乱码:
此时,在执⾏SQL脚本时就会报错:
这个解决⽅案,是将⽂件修改成utf-8格式,或者在VI中修改:
:set fileencoding=utf-8
在MYSQL中,⼀个汉字占3个字节,如何避免乱码:
1,编辑⽂件时,指定与数据库相同字符集,⽐如gbk
2,在初始化数据库时,对库的字符集,表,以及字段进⾏统⼀编码设置,⽐如gbk
3,在代码中,指定字符集:
mysql_set_character_set(mysql, "utf8");
或者执⾏:
mysql_query('SET NAMES UTF8')。

MySQL中文乱码问题的解决方法

MySQL中文乱码问题的解决方法

MySQL中文乱码问题的解决方法在使用MySQL数据库过程中,经常会遇到中文乱码的问题。

这是由于MySQL默认使用的字符集是Latin1,而大部分中文系统使用的是UTF-8字符集所致。

本文将介绍在MySQL中解决中文乱码问题的几种方法。

一、修改MySQL配置文件MySQL配置文件(f)是MySQL服务器的设置文件,通过修改该文件可以改变MySQL的默认字符集。

在Linux系统中,该文件通常位于/etc/mysql/f或者/etc/f。

在Windows系统中,该文件通常位于MySQL安装目录下的my.ini文件。

步骤如下:1. 找到f或my.ini文件并打开。

2. 在[mysqld]部分添加或修改以下内容:```[mysqld]character-set-server=utf8collation-server=utf8_general_ci```3. 保存文件并重启MySQL服务。

二、修改数据库、数据表、字段字符集如果修改MySQL配置文件没有解决中文乱码问题,可以尝试直接修改数据库、数据表、字段字符集。

1. 修改数据库字符集可以使用ALTER DATABASE语句修改数据库的字符集。

例如:```ALTER DATABASE database_name CHARACTER SET utf8 COLLATEutf8_general_ci;```2. 修改数据表字符集可以使用ALTER TABLE语句修改数据表的字符集。

例如:```ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;```3. 修改字段字符集可以使用ALTER TABLE语句修改字段的字符集。

例如:```ALTER TABLE table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;```其中,table_name为表名,column_name为字段名。

mysql彻底解决输入和显示中文字段乱码问题

mysql彻底解决输入和显示中文字段乱码问题

1、mysql中文乱码问题有两个,第一个是客户端的中文输入乱码问题,第二个是在黑窗口显示结果时乱码。

第一个问题需要设置客户端client和连接connection的编码为:GBK;
第二个问题需要设置结果显示results的编码为:GBK;
先查询现在的编码:
然后修改编码:
但是这样的改变是动态的,也就是当下一次性的,如果下次重启了数据库,其编码有会恢复为原来的样子了。

----------------------------------------彻底解决中文乱码问题------------------------------------------------------------
1、先得找到 .ini 数据库配置文件。

在Mysql 5.5版本以下的旧版本,.ini 文件可以直接在Mysql的安装目录中找到。

在Mysql 5.5及以上的新版本,.ini 文件就需要在C:\ProgramData\MySQL\MySQL Server 5.5中才能找到!
但C盘下的ProgramData目录是隐藏的,所以先选择显示隐藏项目:
修改.ini 文件中的[mysql] 下面的default-character-set = gbk
这种修改方法是静态的,不管是否重启,都有效。

自-Mysql中文乱码问题完美解决方案

自-Mysql中文乱码问题完美解决方案

转载:Mysql中文乱码的解决方法第一种方法,很精辟的总结:经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:WINDOWS 下导入应该这样使用MYSQL的命令在DOS 命令下进入mysql的bin目录下,输入mysql -uroot -p密码数据库名称<要恢复的数据库, 例如我们要把D盘的一个名称为test.sql的数据库恢复到本地的test2这个数据库,那么就这样: mysql -uroot -p密码test2以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。

只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);mysql_query("SET NAMES 'GBK'");数据库字符集为utf-8连接语句用这个mysql_query("SET NAMES 'UTF8'");mysql_query("SET CHARACTER SET UTF8");mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效。

PHP连接MySQL查询结果中文显示乱码解决方法

PHP连接MySQL查询结果中⽂显⽰乱码解决⽅法我们⾸先假设数据库中采⽤的编码为UTF-8这时我们在PHP页⾯中应当⾸先添加复制代码代码如下:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />此处charset的值utf-8必须与⽂件保存时的编码类型⼀样之后在数据库查询前添加复制代码代码如下:mysql_query("set names 'utf8'");该⾏语句的编码值也应当与上⾯的编码值⼀样。

总⽽⾔之,⽹页保存的编码类型、⽹页的charset=utf-8、和执⾏的set names utf8语句的编码⽅式应当⼀致MySQL的“SET NAMES x”字符集问题分析近来接受BBT的培训,做⼀个投票系统。

系统代码倒不是很难,但是我的时间主要花费在了研究字符集和编码上⾯。

MySQL 和Apache两个系统的编码(字符集)问题让我费劲脑筋,吃尽苦头。

⽹上对这些问题的解决⽐较零散,⽐较⽚⾯,⼤部分是提供解决⽅法,却不说为什么。

于是我将这⼏天收获总结⼀下,避免后来者再⾛弯路。

这篇⽂章对PHP编写有⼀点帮助(看完你就知道,怎样让你的PHP程序在⼤部分空间提供商的服务器⾥显⽰正常),但是更多帮助在于⽹络服务器的架设和设置。

先说MySQL的字符集问题。

Windows下可通过修改my.ini内的1.# CLIENT SECTION2.[mysql]3.default-character-set=utf84.# SERVER SECTION5.[mysqld]6.default-character-set=utf8这两个字段来更改数据库的默认字符集。

第⼀个是客户端默认的字符集,第⼆个是服务器端默认的字符集。

假设我们把两个都设为utf8,然后在MySQL Command Line Client⾥⾯输⼊“show variebles like “character_set_%”;”,可看到如下字符:character_set_client latin1character_set_connection latin1character_set_database utf8character_set_results latin1character_set_server utf8character_set_system utf8其中的utf8随着我们上⾯的设置⽽改动。

php中文乱码问题的解决方案

php中文乱码问题的解决方案php中文乱码问题的解决方案乱码是我们在开发可能经常遇见,也是最让人头疼的一个问题了,下面是店铺分享的php中文乱码问题的解决方案,一起来看一下吧。

第一种:解决HTML中中文乱码问题方法如果你的HTML文件文件出现了乱码问题,那么你可以在head 标签里面加入UTF8编码(国际化编码):UTF-8是没有国家的编码,也就是独立于任何一种语言,任何语言都可以使用的。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>示例我们现在的HTML5文件,设置编码更为简单,像下面这样第二种、HTML和PHP混合的页面解决方案如何是HTML和PHP混编,除了按照第一个方法所说的操作之外,还需要在PHP文件的最上面加入这句代码:<?phpheader("content-type:text/html;charset=utf-8"); //设置编码>第三种、纯PHP页面的中文乱码问题(数据是静态的)如果你的PHP页面出现了乱码,只需要在页面的开始处加入下面代码就可以了。

<?phpheader("content-type:text/html;charset=utf-8"); //设置编码>第四种、PHP+Mysql中文乱码问题这个除了按照第三种所说的操作之外,还要在你的数据查询/修改/增加之前加入数据库编码。

而且,值得注意的是,这里的'UTF8和之前的不一样,中间是没有横线的。

<?phpmysql_query('SET NAMES UTF8');//接下来的就是查出数据或者修改,增加>如何你使用的MySQL版本在 4.1或更高版本,可以在链接数据库操作后,设置一个字符编码,像下面这样UTF-8编码只是其中一种编码,如果不想使用utf-8编码,也可以使用其他编码,只需将UTF-8换成你想使用的编码就可以,目前中文网站开发中主要用的是GB2312和UTF-8 两种编码。

Mysql彻底解决中文乱码问题的...

Mysql彻底解决中⽂乱码问题的...mysql 中常常出现对中⽂⽀持不友好的情况常见的错误 “Illegal mix of collations for operation”下⾯我们规整⼀下 mysql 数据库中⼀共涉及到哪些字符集character-set-server/default-character-set:服务器字符集,默认情况下所采⽤的character-set-database:数据库字符集character-set-table:数据库表字符集⼀般情况下只需要设置character-set-server,⽽在创建数据库和表时不特别指定字符集,这样统⼀采⽤character-set-server字符集.character-set-client:客户端的字符集character-set-results:结果字符集在客户端,如果没有定义character-set-results,则采⽤character-set-client字符集作为默认的字符集下⾯分享⼀个解决mysql 中⽂字符乱码的解决⽅案:修改mysql 配置vim /etc/mysql/f查找 “client” ⼀项:上⾯黄⾊关键词就是我们要找的 client, 紧接着在下⾯添加⼀⾏: default-character-set=utf8保存退出配置⽂件.然后关闭mysql服务,重新启动./etc/init.d/mysql stop/etc/init.d/mysql start然后我们进⼊ mysql ,查看字符集mysql> show variables like 'character\_set\_%';+--------------------------+--------+| Variable_name | Value |+--------------------------+--------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8 |+--------------------------+--------+7 rows in set (0.00 sec)上⾯结果可以看到字符集默认⽀持 utf8,我们在涉及到汉字的时候不会有乱码的情况.以上所述是⼩编给⼤家介绍的Mysql彻底解决中⽂乱码问题的⽅案(Illegal mix of collations for operation),希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

PHP中文乱码解决总结

关于PHP和MySQL出现乱码的解决办法最近几天一直在做贴吧的小项目,跟着十八老师的视频学着,中间也遇到不少问题,我查了不少资料最后都一一解决了。

下面详细分类说明各种乱码的处理方法。

简单地讲乱码的产生和各个环节里面设置的编码类型不匹配有关,这里的乱码主要都是指的中文显示的乱码。

(下面没有特指都是说中文显示乱码)。

我先根据发生乱码的位置来划分。

如果是需要快速查找解决方法的可以直接根据错误位置来查阅本文(根据编号快速查找)。

1.网页显示中文乱码。

2.PHPmyadmin中显示乱码。

3.控制台显示中文乱码。

如果是想详细了解各种情况的童鞋可以耐心阅读本文。

1.第一种在一般网页页面上显示中文出现乱码。

这个主要要改一下页面显示编码设置,如果是PHP文件,则在其中加上一句:header("Content-Type: text/html; charset=utf-8");并且要注意保存PHP文件的时候选择编码为utf8.如图所示在你需要显示的PHP后缀的页面中加上就可以,当然一般来说如果是比较多页面都要设置,一个个去添加很麻烦,就在初始化文件里面最后添加就可以加载到所有需要的文件了。

如果是静态页面(求别喷,很可能有静态页面的说),在页面<head></head>标签之间加上一句:<meta charset="utf-8">。

改完后页面的显示中文就能正常。

Utf8编码格式和gbk格式都是目前中文网站显示所用的编码,所以将charset改为utf即可。

2.第二种在MySQL图形化界面中文数据的显示。

在如PHPmyadmin里面也有可能出现中文乱码。

前面也说了要把PHP文件编码保存为utf8,所以相对应的MySQL的相关字符集的设置也要改成utf8;这里有几种方式可以供选择。

第一种治标不治本。

在需要进行数据库操作的PHP文件里,加上下面几句:mysql_query('set character_set_client = utf8');//设置client的字符集为utf8mysql_query('set character_set_connection = GBK');//s设置连接字符集为gbkmysql_query('set character_set_results = utf8');//设置最后结果的字符集为utf8当然作为程序员来说,如果一个添加留言的页面需要录入中文,一个修改留言的页面也需要中文的录入数据库,每个文件里都必须加,一个个写也是很烦躁的事,建议还是写到初始化文件(比如我写的init.php)里面,其他文件都会自行加载。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档