php+Mysql中网页出现乱码的解决办法详解
$conn = mysql_connect("$host","$user","$password");
mysql_query("SET NAMES 'UTF8'");
mysql_select_db("$database",$conn);
在做页面时,注意这句:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
这样不管输入数据库的中文,还是页面显示,就都正常了。
在DW CS4版里,默认生成的也是utf8页面。
同样的,如果一开始写数据库连接文件时写成:
mysql_query("SET NAMES 'GBK'");
那页面也要相应变成:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
MySQL+PHP乱码原理与解决
◆ MySQL数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MySQL乱码;
◆ MySQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MySQL乱码;
◆ MySQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MySQL乱码;
◆ 用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码;
◆ 如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码;
◆ PHP页面字符集不正确;
◆ PHP连接MySQL数据库语句指定的编码不正确。
注意:
很多人都怀疑MySQL版本不一致会导致乱码,相信看了本说明你就不会这样认为了。
平时你在某些网站看到的文字可能有几种编码, 如你看到一个繁体字,它有可能是big5编码,也有 可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点。
如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法:
将网站编码设为 utf-8,这样可以兼容世界上所有字符。
如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为 GBK, GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK。
使用MySQL+PHP产生乱码的原因都了解得很清楚了,那么解决就不困难了。
MySQL+PHP产生乱码的解决办法:
如果安装MySQL的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MySQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题。
修改数据库编码,如果是数据库编码不正确,可以在PHPmyadmin 执行如下命令:
ALTER DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将test数据库的编码设为utf8。
修改表的编码:
ALTER TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将一个表category的编码改为utf8。
修改字段的编码:
ALTER TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
以上命令就是将test表中dd的字段编码改为utf8。
如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可。
这种情况也是修改页面charset即可。
在连接数据库的语句中。
mysql_connect('localhost','user','password'); mysql_select_db('my_db'); mysql_query("set names utf8;"); //select 数据库之后加多这一句
为了避免PHP页面乱码的发生,PHP页面开始第一句
header("content-type:text/html; charset=utf-8"); //强行指定页面的编码,以避免乱码
注意:照以上方法修改以后只能保证你新插入的数据不会乱码,举个例:如果你用户已提交的数据是BIG5,你却想通过以上方法改为可以在GB2312的网页正确显示是不可能的, 这种文字内码的变换只能通过另写程序来解决。
php+Mysql中网页出现乱码的解决办法详解的更多相关文章
- 基于ORA-12170 TNS 连接超时解决办法详解
转自原文 基于ORA-12170 TNS 连接超时解决办法详解 1.开始----程序-----Oracle------配置和移植工具-----Net Manager----本地----服务命名---o ...
- R中导入excel乱码的解决办法
本文操作系统环境为win10,使用Rstdio. 要说明windows下在使用Rstdio的时候,在使用xlsx包,导入excel表乱码的解决办法. 1.我们先安装xlsx包 install.pack ...
- mysql中连接失败2003错误解决办法
在使用mysql数据库,新建连接时,会报2003-Can't connect to server on 'localhost'(10038)错误,原因主要是MYSQL服务没有启动起来,但是进入:计算机 ...
- Keil µVision4 中出现中文乱码的解决办法
首先得说一下,以前都没有遇到过类似的问题,但是看到有个同学曾经满篇的乱码那叫个心疼. 这里我所说的办法其实只是格式转换的问题,对于其他原因造成的,可能会在以后遇到的时候再来处理了.另外,在将代码文件转 ...
- mysql中的内连接,外连接实例详解
内连接: 只连接匹配的行左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边 ...
- mysql 中的外键key值的详解
如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列2. 如果Key是PRI, 那么该列是主键的组成部分3. 如果Key是UNI, 那么该列是一个唯 ...
- PHP TCPDF ERROR: [Image] Unable to get image解决办法详解
使用TCPDF输出pdf文件时,有时会直接显示pdf文件不可显示,仔细调试之下会报错TCPDF ERROR: [Image] Unable to get image.问题出现Image()函数中.第一 ...
- HTTP 错误 500.19 - Internal Server Error解决办法详解
最近在服务器端部署程序发现这个问题,HTTP 错误 500.19 - Internal Server Error,程序在本地跑是没有问题的.但是部署完,浏览程序就出现这个问题,今天这篇文章就是记录一下 ...
- Jrebel实现tomcat热部署,遇到的问题以及解决办法,详解
我的安装的详细过程: 下载Jrebel: https://github.com/ilanyu/ReverseProxy/releases/tag/v1.4 我的是winx64,所以选择如下的: 下载 ...
随机推荐
- he lover you 用python 搞为 eh revol uoy 。
1.字符串序列翻转 ---- 字符串切片 a_str = “abc”[::-1] 2.字符串分割: b_str = ‘ ds fdf ds ’ b_str .split(" 空格& ...
- LeetCode 简单 - 路径总和(112)
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22 ...
- string类中字符的大小写转换
今天做一道题,要用string类,涉及大小写转换,查看了C++文档,string类没有提供这样的方法,只好自己写. 之后是想到一个比较笨的方法,我把string当成一个容器,然后用迭代器一个一个来替换 ...
- ABAP术语-Customer Enhancement
Customer Enhancement 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/18/1043874.html Adjustment ...
- EF core 中用lambda表达式和Linq的一些区别
转眼一看,又过了10几天没有写博客了,主要还是没有什么可以写的,因为遇到的问题都不是很有价值.不过最近发现用lambda表达式,比用Linq的代码量会少一些,而且也方便一些.不过两者都差不多,相差不是 ...
- Percona-Tookit工具包之pt-show-grants
Preface User privileges regulation is pretty important in DBAs routine job.As we all know,it ...
- Ehcache基于java API实现
上代码: package com.utils.cacheutils; import com.situopenapi.constant.EhcacheConstants; import com.situ ...
- JavaScript--动态添加元素
在网页中,使用JavaScript动态创建元素的方式有三种: 1.document.write() 2.Element.innerHTML 3.document.createElement() 在上述 ...
- JavaScript文本框焦点事件
效果图如下: <!-- 当文本框获得焦点时候,如果文本框内容是 请输入搜索关键字 清空文本框,输入内容变黑色 --> <!-- 当文本框失去焦点时候,如果文本框无内容,则添加灰色的 ...
- python多线程举例
Python中使用线程有两种方式:函数或者用类来包装线程对象. 1. 函数式:调用thread模块中的start_new_thread()函数来产生新线程.如下例: import time ...