奇怪的乱码问题 本帖最后由 zhaozhong3 于 2009-10-23 05:11:22 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 连接数据库时选择的什么字集??mysql_query("SET NAMES 'gb2312'"); 忘记放链接了啊:http://blog.csdn.net/yw1386/archive/2009/10/14/4671845.aspx 要保证utf8的是1、数据库字符集2、页面3、所有php页面4、mysql_query("SET NAMES 'utf-8'"); 乱码问题天天有,月月有...你insert/update数据入mysql的时候,得告诉mysql你当前数据是什么编码格式.你select数据出mysql的时候,得告诉mysql你想要返回的是什么编码格式的数据.mysql会自动帮你转换,你只需要清楚告诉mysql,你想要用什么编码与mysql交互.mysql_query("set names 编码格式");合3条语句为一体1.set character_set_client = 编码格式 #告诉mysql你的语句是什么编码2.set character_set_connection = 编码格式 #告诉mysql将语句转成什么编码格式与数据表通话.3.set character_set_results = 编码格式 #告诉mysql返回什么编码格式给你的php业务端从mysql读出什么编码的数据后,须告诉browser,以正确的编码去读这些数据比如返回的是utf-8,就用html的meta标签或者php的header去命令browser以什么样的编码格式读取数据.html: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>php : header('Content-type:text/html;charset=utf-8'); 要保证utf8的是 1、数据库字符集 2、页面 3、所有php页面 4、mysql_query("SET NAMES utf8");这样应该就不会有问题的 我是用Dreamweaver建立的PHP页面,Dreamweaver里默认设置了使用utf-8作为默认字符集。只是用它新建的PHP文件,是带有HTML头信息的,对于那些要require()的php文件,我就把HTML部分全删除了,使页面以<?php ?>开头和结尾。不知删除了HTML的头信息部分,会不会对php文件的字符集产生影响,我再确认一下。另外,“mysql_query("SET NAMES 'utf-8'");”这个语句我加过,加入后,除了数字意外,反而全部汉字字符都变成乱码了。 mysql_query("SET NAMES 'utf8'");”//mysql是utf8,php是utf-8,注意这个小区别. 谢谢各位我加的是 “mysql_query("SET NAMES 'utf8'");”,加过后,原来的中文字符全部变成乱码。“mysql_query("SET NAMES 'utf-8'");”我也试了,显示没变化。 mysql_query("set names 'gb2312'");试试? mysql_query外面不要用双引号! lz,你insert进数据库的时候,确认数据是utf-8么?你用phpmyadmin(browser选择utf-8)去看那些数据,是正确的么 问题解决了,我在提交页面和读取页面同时加入了“mysql_query("SET NAMES 'utf8'");”,就正常了,之前只单独加在了提交页面或读取页面。yw1386,你的文章我看了,很有帮助,我用了你文章中提到的“$code=mb_detect_encoding($filename)”语句检查了我的字符串的类型,发现在我自己电脑上,会输出“UTF-8”,而在服务器上则没有任何输出,显然是服务器上的字符串不符合任何一种编码规则,因此才没有mb_detect_encoding才没能显示结果。另外,你文章中的mysql_query("SET NAMES 'utf-8'")是否该改为mysql_query("SET NAMES 'utf8'");”呢?再次感谢大家的热心回复! 在连接数据库,选择数据库后,再添加一句mysql_query("SET NAMES 'gb2312'");就好了。我也是这样的。 http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspxMySQL 中文显示乱码 总之,就是用 “mysql_query("SET NAMES 'utf8'");”写入标准的UTF-8,之后再用同样的语句按标准读出UTF-8。在我自己的电脑上,不加“mysql_query("SET NAMES 'utf8'");”语句,写入和输出也都是正常的。但在服务器上则不然。不知道这是否是由于WINDOWS和UNIX系统环境的差异引起的,或是Apache、MySQL不同版本间处理字符的细微差别造成的。幸好我把数据库连接字串和连接函数都写在了conn.php中,因此每个需要建立数据库连接的页面都会引用conn.php,我把“mysql_query("SET NAMES 'utf8'");”加到这个页面里了,之后所有的页面就全部正常了。省得挨个修改每个页面了。再次感谢各位热心回复的朋友! PHP socket出现乱码 关于readfile 和file_get_conents的问题 对了,有一个很有深度的图片问题 ????php文件上传, Windows上可以,传到Linux上没反应 关于一个显示乱码的疑问,问题已经解决,只是想问个为什么? PHP怎么判断上一页来源? 文件上传出错 === 征集PHP下各种数据库的分页"方案"及"源代码"! 谢谢各位支持 === php图片输出imagepng问题 php类中不同方法new同一个model 和 用单例模式去获取model实例的区别?? PHP md5对中文加密结果和C#不一样,求救 PHP分割怎么得到最后一条
mysql_query("SET NAMES 'gb2312'");
1、数据库字符集
2、页面
3、所有php页面
4、mysql_query("SET NAMES 'utf-8'");
你select数据出mysql的时候,得告诉mysql你想要返回的是什么编码格式的数据.
mysql会自动帮你转换,你只需要清楚告诉mysql,你想要用什么编码与mysql交互.
mysql_query("set names 编码格式");合3条语句为一体
1.set character_set_client = 编码格式 #告诉mysql你的语句是什么编码
2.set character_set_connection = 编码格式 #告诉mysql将语句转成什么编码格式与数据表通话.
3.set character_set_results = 编码格式 #告诉mysql返回什么编码格式给你的php业务端从mysql读出什么编码的数据后,须告诉browser,以正确的编码去读这些数据
比如返回的是utf-8,就用html的meta标签或者php的header去命令browser以什么样的编码格式读取数据.
html: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
php : header('Content-type:text/html;charset=utf-8');
1、数据库字符集
2、页面
3、所有php页面
4、mysql_query("SET NAMES utf8");这样应该就不会有问题的
mysql_query("SET NAMES 'utf8'");”//mysql是utf8,php是utf-8,注意这个小区别.
“mysql_query("SET NAMES 'utf-8'");”我也试了,显示没变化。
试试?
MySQL 中文显示乱码