php+mysql,在写入mysql数据库乱码中看中文出现乱码,但是在页面输出的时候是正常的!

页面导航:
→ 正文内容 PHP utf-8编码
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
老声长谈,着是困惑很多人的问题,如果处理不好,都是乱码,说这些话并不是我对编码很精通,只是在这方面是得留神,自己总结了一点小经验
老声长谈,着是困惑很多人的问题,如果处理不好,都是乱码,说这些话并不是我对编码很精通,只是在这方面是得留神,自己总结了一点小经验(容易出现乱码的地方有php文件里面 ,数据库里面 存储 的编码 ,页面显示 ,数据传输 ):
1.在建数据库的时候,尤其是用phpMyAdmin与MYSQL打交道时候,一般都是utf-8,字段为 utf8_general_ci
数据库的设置:
在my.ini文件中查找:[mysql]default-character-set = utf8[mysqld]default-character-set = utf8init_connect = 'SET NAMES utf8 '全部设置为utf8保存,重新启动mysql服务
2.在与数据打交道的时候mysql_query("set names 'utf8'");注意是:utf8,不是 utf-8
3.PHP的文件默认的编码是ANSI ,需要转换为UTF-8 ,至于怎么转换editplus就有这样的功能,“另存为”的时候有选择编码UTF-8 ,注意:不能选择:UTF-8 + BOM,如果选择这个了 ,你在处理session的时候就会出现问题,所以一定要注意.还有有的人在eclipse,Myeclipse,ZendStudio里面开发,eclipse里面默认的是ISO-8859-1,需要在“窗口 ”-&“首选项 ”打开“首选项”窗口,在左侧“常规 ”-&“工作空间 ”,在“文本文件编码 ”里面设置默认的编码为utf-8
4.就是PHP文件里面要说明:如&meta http-equiv="Content-Type" Content="text/charset=utf-8"&
或者 代码如下:&?php header('Content-Type:text/charset=utf-8');?&& 5.还有就是处理中文等双字节的时候也有可能出现乱码,PHP里面可以采用的有iconv,mb_convert_encoding来处理双字节,其余的可以参考PHP帮助手册
6.在补充一点(遗漏的一点),在你的程序里面你要知道数据之间的传递也有可能存在编码问题的,但是你又不知道传递过来的数据是采用的什么编码,在PHP里面提供了方法来处理的,下面是自己写的一个简单方法,可以参考一下
代码如下://编码转换& &&&&&&& function display_fileencoding($filename)& &&&&&&& {& &&&&&&&&&&& if(extension_loaded("mbstring"))& &&&&&&&&&&& {& &&&&&&&&&&&&&&& $code=mb_detect_encoding($filename);//检测字符串编码& &&&&&&&&&&&&&&& $filename=mb_convert_encoding($filename,"UTF-8",$code);//将编码$code转换为utf-8编码& &&&&&&&&&&&&&&& return $& &&&&&&&&&&& }& &&&&&&&&&&& else& &&&&&&&&&&&&&&& die("请检查系统是否正确安装配置mbstring");& &&&&&&& }&
要确保mbstring在你的php.ini中启用
7.保证以上几处编码一致就可以了!!数据库,网页输出都不会出现乱码了,如有不对的,请留言指出!!
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!您的位置: >
> html乱码原因与网页乱码解决方法,浏览器浏览网页内容出现乱码符合解决篇()
造成网页乱码原因主要是内中文字内容与html编码不同造成。但无论是哪种情况造成乱码在网页开始时候都需要设置网页编码。
charset编码设置
html网页乱码效果截图
一、乱码造成原因
1、比如是gbk的编码,而内容中的中文字是utf-8编码的,这样浏览器打开即会出现html乱码。反之网页是编码utf-8,内容是gbk也会出现乱码。
2、html网页编码是gbk,而程序从数据库中调出呈现是utf-8编码的内容也会造成编码乱码。
3、浏览器不能自动检测网页编码,造成网页乱码。
二、解决乱码方法
第一种,html网页源代码编码与中文字输入编码不同。
解决方法:
使用软件进行编辑HTML网页内容,推荐使用进行编辑和开发。
尽量不要直接使用记事本进行编辑HTML代码。
第二种,如果网页设置编码是gbk的,而数据库储存数据编码格式是UTF-8的,这个时候程序查询数据库数据显示数据前进乡程序转码即可。
例如PHP程序+mysql查询显示数据转码:
1、mysql_query(&SET NAMES 'UTF8'&); //将查询数据转码为utf8,也就是转换为utf-8
2、mysql_query(&SET NAMES 'GBK'&);//将查询数据转码为GBK,如gbk2312
在写数据库连接文件时,写成:
$conn&=&mysql_connect(&$host&,&$user&,&$password&);&mysql_query(&SET&NAMES&'UTF8'&);&mysql_select_db(&$database&,$conn);&
然后在做页面时,注意这句:
&http-equiv=&Content-Type&&content=&text/&charset=utf-8&&&
这样不管输入数据库的中文,还是页面显示,就都正常了。
在DW CS4版里,默认生成的也是utf8页面。
同样的,如果一开始写数据库连接文件时写成:
mysql_query(&SET&NAMES&'GBK'&);&
那页面也要相应变成:
&http-equiv=&Content-Type&&content=&text/&charset=gb2312&&&
其它asp程序或其它程序语言网站根据实际情况到百度查询转换编码方法。
第三种,浏览器造成乱码。
这个可能是你网页没有设置meta charset编码造成。导致浏览器不能识别你网页默认编码类型。解决方法:
1、如果浏览器浏览时候出现网页乱码,在浏览器中找到转换编码的菜单。
在IE9浏览器中需要转码的网页空白出右键鼠标,即可选择&编码&。
傲游浏览器中浏览需要转码的网页时,菜单&查看&--&&编码&即可选择转换编码
谷歌浏览器中浏览需要转码的网页时,点击右上角&三横&图标选择&工具&--&&编码&即可选择切换网页编码达到让浏览器浏览此网页不是乱码。
傲游浏览器切换当前浏览网页编码截图
2、如果自己开发网页,必须网页加入meta charset编码标签。
&http-equiv=&Content-Type&&content=&text/&charset=gb2312&&&
&http-equiv=&Content-Type&&content=&text/&charset=utf-8&&&
假如转换时候,不是记事本编辑添加meta charset编码标签就完成,这样同样会造成乱码,那是因为直接记事本添加或修改编码格式后,而对应Html超文本文档内容并没有随添加或修改编码格式而变化,这个时候需要真正意义上的转码,所以最好借助开发软件进行编码添加与修改。
推荐DW软件中修改编码。在DW软件中进行编码修改或添加,并重新载入编码的网页。
DW转化网页编码类型选项卡截图
扩展相关阅读:
8、如需转载,请注明文章出处和来源网址:我要分享到:上一篇: 下一篇: 必备CSS教程 Essential CSS Tutorials• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ()• • ()• ()• • • • • • • • • • • • • • • • 必备HTML基础教程 Essential HTML Tutorials •
• () • () • () •
• () •
• () •
• 如对文章有任何疑问请提交到,或有任何网页制作CSS问题立即到发贴求解 或 直接DIVCSS5网页顶部搜索遇到DIVCSS疑问。文章修订日期: 00:30
原创:本文 DIVCSS5版权所有。最新文章NEWS• • • • • • • • • • CSS EFFECTS相关文章RELATED• • • • • • • • • • 热点文章HOT
学习与资源分享平台新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分35阅读权限10帖子精华可用积分35 信誉积分0 专家积分0 在线时间15 小时注册时间最后登录
白手起家, 积分 35, 距离下一级还需 165 积分
帖子主题精华可用积分35 信誉积分0 专家积分0 在线时间15 小时注册时间最后登录
论坛徽章:0
我网站,前台页面全部是utf-8,数据库编码也设置成了utf8;开发环境默认也是utf-8,然而我提交数据库后,数据库中文乱码?
咋回事呢?
全部统一了。还是出现乱码。数据库中文正常的,前台显示为乱码&?????&.数据库显示乱码的,前台正常。为什么呢?
数据库MYSQL我看了。支持的字符集没有看到gb2312&&gbk是否有关系呢?我装的是LINUX,语言选择 的是简体中文版本。
现在出现了这个问题。希望有高手或者遇到过同样问题的人。帮忙解决下。谢谢了。
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分649阅读权限20帖子精华可用积分649 信誉积分0 专家积分0 在线时间296 小时注册时间最后登录
丰衣足食, 积分 649, 距离下一级还需 351 积分
帖子主题精华可用积分649 信誉积分0 专家积分0 在线时间296 小时注册时间最后登录
论坛徽章:0
不明白,你开发环境utf8是啥意思,页面查询数据库的时候也要用utf8
UID空间积分0 积分35阅读权限10帖子精华可用积分35 信誉积分0 专家积分0 在线时间15 小时注册时间最后登录
白手起家, 积分 35, 距离下一级还需 165 积分
帖子主题精华可用积分35 信誉积分0 专家积分0 在线时间15 小时注册时间最后登录
论坛徽章:0
开发环境-----是我的apache+mysql+linux的php.ini配置也是utf8默认。
my.ini也默认为utf8 --- mysql配置文件。
前台执行代码也是utf-8编码的文件。
现在插入到数据库内为乱码(中文)。
男性it民工
UID1730385空间积分805 积分197861阅读权限100帖子精华可用积分197861 信誉积分5986 专家积分563 在线时间23435 小时注册时间最后登录
帖子主题精华可用积分197861 信誉积分5986 专家积分563 在线时间23435 小时注册时间最后登录
认证徽章论坛徽章:354
楼主用什么工具查看的数据乱码?
在执行sql之前执行set names utf8看看
好读书,不求甚解;每有会意,便欣然忘食
非淡泊无以明志,非宁静无以致远。
UID7436345空间积分0 积分63阅读权限10帖子精华可用积分63 信誉积分110 专家积分0 在线时间17 小时注册时间最后登录
白手起家, 积分 63, 距离下一级还需 137 积分
帖子主题精华可用积分63 信誉积分110 专家积分0 在线时间17 小时注册时间最后登录
论坛徽章:0
如果你的数据是通过网页来提交到数据库中的话,提交内容是什么编码是由你这个网页编码来决定的。
UID空间积分0 积分345阅读权限20帖子精华可用积分345 信誉积分0 专家积分0 在线时间19 小时注册时间最后登录
稍有积蓄, 积分 345, 距离下一级还需 155 积分
帖子主题精华可用积分345 信誉积分0 专家积分0 在线时间19 小时注册时间最后登录
论坛徽章:0
我很菜,但我愿意尽我所能帮助你,如果需要的话。
UID7940076空间积分0 积分624阅读权限20帖子精华可用积分624 信誉积分58 专家积分0 在线时间629 小时注册时间最后登录
丰衣足食, 积分 624, 距离下一级还需 376 积分
帖子主题精华可用积分624 信誉积分58 专家积分0 在线时间629 小时注册时间最后登录
论坛徽章:0
lvsecaoyuan
& & mysql默认编码方式是gb2312的,所以会出现乱码,&&你在建立数据库的时候使用 set names utf8;& &建立表的时候加上default charset utf-8,
& & 这样数据库和页面的编码方式一致,就显示正常了。
UID7940076空间积分0 积分624阅读权限20帖子精华可用积分624 信誉积分58 专家积分0 在线时间629 小时注册时间最后登录
丰衣足食, 积分 624, 距离下一级还需 376 积分
帖子主题精华可用积分624 信誉积分58 专家积分0 在线时间629 小时注册时间最后登录
论坛徽章:0
如果你全部都统一为utf8,正常情况下,你在数据库中看到的是乱码,而在前台显示的是正常的。
如果你发现数据库中某些中文显示正常,而前台显示乱码,则可能是这部分数据在插入数据库的时候,不是以utf-8格式插入的。你可以在插入数据前先检测中文字符是不是utf-8,再插入
UID9364885空间积分0 积分1660阅读权限30帖子精华可用积分1660 信誉积分115 专家积分5 在线时间267 小时注册时间最后登录
家境小康, 积分 1660, 距离下一级还需 340 积分
帖子主题精华可用积分1660 信誉积分115 专家积分5 在线时间267 小时注册时间最后登录
论坛徽章:0
你程序连接数据库之后 query一句 set names utf8
幽自己的冷默,让别人纳闷去吧
UID空间积分0 积分1211阅读权限30帖子精华可用积分1211 信誉积分9 专家积分0 在线时间519 小时注册时间最后登录
家境小康, 积分 1211, 距离下一级还需 789 积分
帖子主题精华可用积分1211 信誉积分9 专家积分0 在线时间519 小时注册时间最后登录
论坛徽章:0
使用pdo之前 使用两句来解决该问题:
set names 'utf8';
set sql_mode='';
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处PHP页面和Mysql数据库的转UTF8编码问题总结 - ThinkPHP框架
一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意,如果没有转换彻底,将会有很多的编码问题出现!
一、PHP页面转UTF-8编码问题
1.在代码开始出加入一行: header("Content-Type: text/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标签!
3.可以用Notepad++打开文件,选择“格式”-&“以UTF-8无DOM形式编码”然后保存。
这里有一个小技巧:如果原来不是utf8的,在选择后会乱码。此时先CTRL+A全选-&CTRL+X剪切-&选择“格式”-&“以UTF-8无DOM形式编码”-&CTRL+V粘贴。
4.PHP以附件形式保存文件的时候,UTF-8编码问题: PHP以附件形式保存文件,文件名必须是GB2312编码,否则,如果文件名中有中文的话,将是显示乱码: 如果你的PHP本身是UTF-8编码格式的文件,需要将文件名变量由UTF-8转成GB2312: iconv("UTF-8", "GB2312", "$filename");
5.截断显示文章标题时,出现乱码或者“?”问号的问题:
请使用TP中的msubstr。注意使用此方法前,需要在Action中Load('extend');msubstr($row["news_title"],0,20,$charset="utf-8",&$suffix=false);MYSQL数据库使用UTF-8编码的问题
1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci”或执行语句:CREATE&DATABASE&`dbname`&DEFAULT&CHARACTER&SET&utf8&COLLATE&utf8_general_创建数据表的时候:如果是该字段是存放中文的话,则需要将“整理”设置为:“utf8_general_ci”,如果该字段是存放英文或数字的话,默认就可以了。
相应的SQL语句,例如:CREATE&TABLE&`test`&(&&
`id`&INT&NOT&NULL&,&&
`name`&VARCHAR(&10&)&CHARACTER&SET&utf8&COLLATE&utf8_general_ci&NOT&NULL&,&&
PRIMARY&KEY&(&`id`&)&&
)&ENGINE&=&MYISAM&;2.如果自己用PHP原生方法读写数据库
在连接数据库之后:$connection&=&mysql_connect($host_name,&$host_user,&$host_pass);加入两行:mysql_query("set&character&set&'utf8'");//读库&&
mysql_query("set&names&'utf8'");//写库就可以正常的读写MYSQL数据库了。
积分:16304
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

我要回帖

更多关于 mysql导出数据库乱码 的文章

 

随机推荐