php 乱码问题分析

 更新时间:2016年11月25日 15:07  点击:2030
乱码一直是困扰初学者的一个非常大的问题。现在总结下造成乱码的原因及及解决方法,主要是mysql数据库与php页面出现乱码,下面详细的分析了这些原因。希望对大家有所帮助。

一、HTML页面编码:meta http-equiv=content-type content=text/html; charset=utf-8 这里的编码要和数据库教程编码,及连接数据库编码

二、文件在存储编码:比如文件inde.php教程,改变其存储编码为所需编码。只需用EditPlus等文本编辑软件 文件另存为,在编码中选择正确的编码(这点很多人都会忽略)

三、数据库编码:比如用的是phpmyadmin 选择数据库后,选择操作选项。下面有一个整理,这里面也要设置成统一的编码

四、表编码:操作和第三点类似。这里就不重复了

五、字段编码:在建表的建字段的时候,有个整理。如果内容有汉字,就一定要改成统一的编码

六、连接数据库时mysql教程_select_db()后面,要加一句 mysql_query( set names utf8 )

七、 (刚遇到的)本地测试成功后的网站,传到网上去,会有乱码。可能会是在本地导出数据时没有选择正确的编码,所以才会在导入到web上后有乱码问题

这是一款用户注册的功能,可以实现简单的用户由创建数据库到注册成功,有需要的朋友可以参考一下。
 代码如下 复制代码

<?php教程
$DB_HOST = "localhost";  //数据库教程主机位置
$DB_LOGIN = "root";  //数据库的使用账号
$DB_PASSWORD = "admin";  //数据库的使用密码
$DB_NAME = "flag"; //数据库名称

$conn= mysql教程_connect($DB_HOST, $DB_LOGIN, $DB_PASSWORD);
mysql_select_db($DB_NAME);
?>


************************222222

<?php
functiondb_query($sqlstr) {returnmysql_query($sqlstr);}
functiondb_num_rows($res) {returnmysql_num_rows($res);}
functiondb_fetch_array($res) {returnmysql_fetch_array($res);}
functiondb_fetch_object($res) {returnmysql_fetch_object($res);}
functiondb_data_seek($res,$num){return mysql_data_seek($res,$num);}
functiondb_insert_id($res) {returnmysql_insert_id($res);}
?>


 

**************************333333333333

<?
include("registry_up.htm") // 导入网页上半部
?>
<script>
functioncheck()
{
if(document.regstep1.username.value== "")
{
alert("未输入账号");
returnfalse;
}
if(document.regstep1.userpass.value== "")
{
alert("请勿使用空白密码");
returnfalse;
}
if(document.regstep1.userpass.value!= document.regstep1.userpass2.value)
{
alert("两次输入的密码不相同");
returnfalse;
}

document.regstep1.submit();

}
</script>

<script>
<!--------- 打开会员账号重复性检查功能页面的函数 BEGIN---------->
function Checkname(){
var Name = document.regstep1.username.value;
window.open("uniquecheck.php?name="+Name,"Check","width=300,height=10,status=0,scrollbars=0,resizable=1,menubar=0,toolbar=0,location=0");
}
<!---------- 打开会员账号重复性检查功能页面的函数 END----------->
</script>

<form name="regstep1"method="post" action="registry_do.php">
<?php /*?><inputtype="submit" name="username"value="<?=$username?>">
<inputtype="submit" name="userpass"value="<?=$userpass?>">
<inputtype="submit" name="pass_rem"value="<?=$pass_rem?>">
<inputtype="submit" name="pass_ans"value="<?=$pass_ans?>">
<?php */?>

<BR>
<table width="446" border="0"bordercolor="#000000" align="center"cellspacing="0">
<tr>
<td>
<table width="440" border="0"height="220" align="center" bgcolor="#EEEEEE" cellspacing="0"cellpadding="0">
<tr>
<td colspan="2" bgcolor="#FFFFFF">
<divalign="center"><img src="images/1.GIF"width="298" height="41"></div>
</td>
</tr>
<tr>
<td>
  <div align="center">账   号</div>
</td>
<td height="18">
<divalign="center">
<input type="text"name="username" size="15">
<inputonClick="网页特效:Checkname()" type=button value="检查账号"name="button">
  </div>
</td>
</tr>

<tr>
<td bgcolor="#FFFFFF">
<divalign="center">密   码</div>
</td>
<td height="6" bgcolor="#FFFFFF">
<div align="center">
<inputtype="password" name="userpass" size="20">
</div>
</td>
</tr>
<tr>
<td>
<divalign="center">密 码 确 认</div>
</td>
<td height="2">
<divalign="center">
<inputtype="password" name="userpass2" size="20">
</div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">
<divalign="center">密 码 提 示</div>
</td>
<td height="2" bgcolor="#FFFFFF">
<divalign="center">
<selectname="pass_rem">
<optionvalue="0">您宠物的名字</option>
<optionvalue="1">您最想去的国家</option>
  <optionvalue="2">您最喜欢的运动</option>
<optionvalue="3">您最讨厌的食物</option>
<optionvalue="4">您在家最常做什么</option>
<optionvalue="5">您最爱看的电影</option>
</select>
</div>
  </td>
</tr>
<tr>
<td>
<divalign="center">答   案</div>
</td>
<td height="2">
<divalign="center">
<input type="text"name="pass_ans" size="20">
</div>
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFFF">
<divalign="center">
<inputtype="reset" name="reset" value="清除重填">
<inputtype="button" name="Submit" value="提交"onClick="check();">
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>

<?
include("registry_down.htm") // 导入网页下半部
?>

******************************44444444444

<?
include("db_conn.php");
include("db_func.php");

//增加会员账号/密码 BEGIN
$SQLStrUser= "INSERT INTO member (m_username, m_userpass, m_pass_rem, m_pass_ans)";
$SQLStrUser.= " VALUES('$username', '$userpass', '$pass_rem', '$pass_ans') ";
db_query($SQLStrUser);
//增加会员账号及密码 END


?>

<script>
alert("<?php echo "注册完成"; ?>");
  location.href = "www.111cn.net";
</script>

 

****************************55555555555555555


<?
include("db_conn.php");
include("db_func.php");

//查询注册账号名称是否包含不雅字词 BEGIN
$SQLStr= "SELECT * FROM nogood WHERE n_name LIKE '%$username%'";
$res= db_query($SQLStr);
//查询注册账号名称是否包含不雅字词 END

if(db_num_rows($res)>0) // 若查询数据有相符
{
echo"<script>";
echo"alert("请勿使用不雅名称" . $username . "为账号");";
echo"location.href = "registry1.php";";
echo"</script>";
}
?>

 

******************************6^^^^^^^^


<?
include("db_conn.php");
include("db_func.php");

//查询数据库是否有此用户名称BEGIN
$sqlstr= "SELECT * FROM member WHERE m_username='$name'";
$res= db_query($sqlstr);
//查询数据库是否有此用户名称BEGIN

if(db_num_rows($res)>0) //检查查询结果是否有数据
  echo "<br><center>此账号名称" .$name. "已被注册使用</center>";
else
  echo "<br><center>此账号名称" .$name. "尚未有人注册使用</center>";
?>

 

这里面有数字,整数,字母,数字+字母 超级链接 电话号码 手机等验证有需要的朋友可以参考一下

/^[0-9.-]+$/数字
/^[0-9-]+$/整数
/^[a-z]+$/i字母
/^[0-9a-z]+$/i数字+字母
/^[w-.]+@[w-.]+(.w+)+$/E-mail
/^[0-9]{5,20}$/QQ
/^http:///超级链接
/^(1)[0-9]{10}$/手机号码
/^[0-9-]{6,13}$/电话号码
/^[0-9]{6}$/邮政编码

我们介绍的是利用php各种函数与foreach while for来实现数组遍历的方法,有需要的朋友可以参考一下。

 

<?php教程
//a
$arr=array('a'=>'abc','b'=>123,'c'=>true);
//b
//$arr=range('a','d');
//1
for($i=0;$i<sizeof($arr);$i++)
echo $arr[$i].', ';
echo '<br />';
//2
foreach($arr as $key)
echo "$key, ";
echo '<br />';
//3
foreach($arr as $key=>$val)
echo "$key-$val, ";
echo '<br />';
//4
reset($arr);
while($item=each($arr)){
echo $item['key'].'-'.$item['value'].', ';
}
echo '<br />';
//5
reset($arr);
while(list($key,$val)=each($arr)){
echo "$key-$val, ";
}
echo '<br />';
?>
这是一个新手写的上传文件,开始有点问题经过处理完全可以实现文件上传,支持任何类型。

这是一个新手写的上传文件,开始有点问题经过处理完全可以实现文件上传,支持任何类型。

<form action="form.php教程" method="post" enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000000">
        <input type="file" name="spic"> <br>
        <input type="submit" name="sub" value="upload file"><br>
       
<?php
        if(is_uploaded_file($_FILES['spic']['tmp_name'])){
                echo "<pre>";
                print_r($_FILES);
                move_uploaded_file($_FILES['spic']['tmp_name'],$_FILES['spic']['name']);
                echo "上传成功";
               
                echo "</pre>";
                }
?>
</form>   

    
运行过程,随便找个文件,显示如下:

Array
(
    [spic] => Array
        (
            [name] => IMG_0044.JPG
            [type] => image/jpeg
            [tmp_name] => F:TempphpF695.tmp
            [error] => 0
            [size] => 3737804
        )

)

[!--infotagslink--]

相关文章

  • php生成二维码中文乱码问题解决方法

    最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • PHP传值到不同页面的三种常见方式及php和html之间传值问题

    在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大...2015-11-24
  • js修改input的type属性问题探讨

    js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。...2013-10-19
  • Mysql常见问题集锦

    1,utf8_bin跟utf8_general_ci的区别 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a'...2013-10-04
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • C#读取中文文件出现乱码的解决方法

    这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • Mysql大小写敏感的问题

    一、1 CREATE TABLE NAME(name VARCHAR(10)); 对这个表,缺省情况下,下面两个查询的结果是一样的:复制代码 代码如下: SELECT * FROM TABLE NAME WHERE name='clip'; SELECT * FROM TABLE NAME WH...2015-03-15
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
  • PHP json_encode() 函数详解及中文乱码问题

    在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<&#63;php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
  • MYSQL事务回滚的2个问题分析

    因此,正确的原子操作是真正被执行过的。是物理执行。在当前事务中确实能看到插入的记录。最后只不过删除了。但是AUTO_INCREMENT不会应删除而改变值。1、为什么auto_increament没有回滚?因为innodb的auto_increament的...2014-05-31
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
  • 解决HttpPost+json请求---服务器中文乱码及其他问题

    这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22
  • Mysql索引会失效的几种情况分析

    索引并不是时时都会生效的,比如以下几种情况,将导致索引失效: 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)  注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引 ...2014-06-07
  • php中iconv编码转换来解决中文乱码的问题

    用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些 代码如下 复制代码 ...2016-11-25
  • C#使用队列(Queue)解决简单的并发问题

    这篇文章主要介绍了使用队列(Queue)解决简单的并发问题,讲解的很细致,喜欢的朋友们可以了解一下...2020-06-25
  • python 爬取京东指定商品评论并进行情感分析

    本文主要讲述了利用Python网络爬虫对指定京东商城中指定商品下的用户评论进行爬取,对数据预处理操作后进行文本情感分析,感兴趣的朋友可以了解下...2021-05-28
  • php mail发邮件标题中文乱码的问题解决办法

    本文章来给大家介绍php mail发邮件标题中文乱码的问题解决办法,希望到此类问题的朋友可进入参考。 当使用下面的PHP语句发送电子邮件的时候,如果编码和接收邮箱编码...2016-11-25
  • Underscore源码分析

    Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。这篇文章主要介绍了underscore源码分析相关知识,感兴趣的朋友一起学习吧...2016-01-02
  • Google会不会取消PR的理由分析

    Google是这样介绍PageRank的:   Google 出类拔萃的地方在于专注开发“完美的搜索引擎”,联合创始人拉里&middot;佩奇将这种搜索引擎定义为可“确解用户...2017-07-06