PHP+MYSQL 出现乱码问号的解决方法

使用PHP+MYSQL时遇到过字符乱问题,解决方法:

在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:

 代码如下 复制代码

1 $mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
2 mysql_query("SET NAMES 'GBK'");

数据库字符集为utf-8

连接语句用这个
 

 代码如下 复制代码
1 mysql_query("SET NAMES 'UTF8'");
2 mysql_query("SET CHARACTER SET UTF8");
3 mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");

下面是一些常见的错误情况与解决:

1、数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用: mysql_query("SET NAMES GBK"); 来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用: mysql_query("SET NAMES UTF8");
注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。

注:事实上MYSQL的数据输入输出比上面讲的更复杂一些,MYSQL配置文件my.ini中定义了2个默认编码,分别是[client]里的default -character-set和[mysqld]里的default-character-set来分别设定默认时候客户端连接和数据库内部所采用的编码。我们上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client,来告诉MYSQL服务器接受到的客户端数据是什么编码的,而不是采用默认编码。

2、页面申明编码与文件本身编码不一致,这种情况很少发生,因为如果编码不一致美工做页面时候在浏览器看到的就是乱码了。更多时候是发布以后修改一些小BUG,以错误编码打开页面然后保存导致的。或者是用某些FTP软件直接在线修改文件,比如CuteFTP,由于软件编码配置错误而导致转换错了编码。

3、一些租用虚拟主机的朋友,明明上述3项编码都设置正确了还是有乱码。比方说网页是GB2312编码的,IE等浏览器打开却总是识别成UTF-8,网页HEAD里面已经申明是GB2312了,手动修改浏览器编码为GB2312 后页面显示正常。产生原因是服务器Apache设定了服务器全局的默认编码,在httpd.conf里面加了AddDefaultCharset UTF-8。这时候服务器会首先发送HTTP头给浏览器,其优先级比页面里申明编码高,自然浏览器就识别错了。解决办法有2个,请管理员在配置文件自己的虚机里加上一条AddDefaultCharset GB2312来覆盖全局配置,或者在自己目录的.htaccess里配置。

时间: 2024-08-20 00:27:04

PHP+MYSQL 出现乱码问号的解决方法的相关文章

PHP读MYSQL中文乱码的快速解决方法_php技巧

打算切换某个网站的主机,没想到遇到Php和Mysql中文乱码的问题. 以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题. 只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用

php版微信公众平台回复中文出现乱码问题的解决方法_php技巧

本文实例分析了php版微信公众平台回复中文出现乱码问题的解决方法.分享给大家供大家参考,具体如下: 微信公众平开发时碰到回复中文乱码了,这个问题小编发现是编码问题,其实只要把编码转成utf8就可以解决了,具体来看看. 很多微信公众平台的自动回复程序都是 ThinkWechat.class.php 这个类开发的,今天碰到一个莫名其妙的乱码问题,查问题发现是GB2312编码导致,所以要修改源码. 先增加一个方法: /** * 检测是否UTF-8 * @param $str * @return boo

log4j日志文件乱码问题的解决方法

 近日在AIX上用log4j打印日志,出现乱码,经过努力解决问题.   症状:在默认语言非中文(或者说默认语言不支持中文的)的Windows.Linux.Unix上,用log4j打印日志,出现乱码,常见的就是一堆问号.   解决方法: 如果是log4j.properties为配置文件,比如: log4j.appender.A1=org.apache.log4j.RollingFileAppender log4j.appender.A1.File=all.log 加入一行:   log4j.app

Zend Studio7中文乱码的终极解决方法

上一篇我介绍了PHP开发工具Zend Studio7入门使用教程,在使用过程中当我们新建(导入)的项目本身的编码是UTF8时,比如Wordpress,我们发现当使用zend studio打开PHP项目文件调试时变量等会出现中文乱码的问题,亦或者当你使用zend studio新建一个UTF8编码的PHP文件,打开时也会出现中文变成乱码的问题,这是由于zend studio的默认字符编码使用的是GBK造成的,那么zend studio中文乱码问题如何解决呢? 针对整个PHP项目调试或单个PHP文件使

Mysql教程:1067错误解决方法

  1 安装MYSQL后更改了ROOT的密码后用 net startmysql 启动时我就遇到了这样的问题.使用以下命令后 c:mysqlbinmysqladmin-u root -p shutdown 再net start mysql就没有这个错误提示了! 2 MySQL的1067错误 Q:我的Mysql碰到了 1067 错误 错误信息为: A system error has occurred. System error 1067 has occurred. The process term

实例讲解MySQL数据库中文问题的解决方法

MySQL数据库中文问题的解决方法: 1.my.ini MySQL配置文件设置 [client] default-character-set=gbk [mysqld] default-character-set=gbk 2.启动MySQL服务创建你的数据库 3.验证当前编码 命令行输入: mysql -u root -p 登录你建立的数据库 >connect yourdatabasename 输入数据库状态命令 >status 假如结果如下: Server characterset: gbk

php导入csv文件碰到乱码问题的解决方法

 这篇文章主要介绍了php导入csv文件碰到乱码问题的解决方法,需要的朋友可以参考下 今天主要是想写一个php导入csv文件的方法,其实网上一搜一大把.都是可以实现怎么去导入的.但是我导入的时候遇到了两个问题,一个是在windows上写代码的时候测试发生了乱码问题,然后解决了.第二个是提交到linux系统上的时候又发生了乱码.我开始还不清楚是乱码的原因,一开始我还以为是代码svn提交发生的错误,到最后我在我的一个群里提问了一下,一朋友是做phpcms的,他说他遇到从Windows提交到Linux

php 连接mysql连接被重置的解决方法

 windows7下 php连接mysql的问题,php 连接mysql连接被重置的解决方法,需要的朋友可以参考下. 新装了windows7 64位系统后,配备布置许多东西,总是有这样的那样子的拂意,昨天在开始配备布置php+apache的时候,echo phpinfo()完全没问题,但是一朝连接mysql就会呈现页面被重置的问题.原来问题不大,但是我却走到了误区:   1.我怀疑64位系统的问题:   2.我感觉代码靠不住,因为另外都能执行,轻率写个 substr()也是能显示出来的   ..

jquery.ajax的url中传递中文乱码问题的解决方法

 本篇文章主要是对jquery.ajax的url中传递中文乱码问题的解决方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 JQuery   JQuery默认的contentType:application/x-www-form-urlencoded    这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1    ISO8859-1,通常叫做Latin-1.Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符.   JQuery的Ajax根本没有考