PHP乱码来源分析

PHP项目出现乱码,原因就是软件之间,模板之间的编码有差异,不相同:

  1. 新建".html", ".php" , ".tpl" , ."js" , ".css"等文件使用utf8统一的编码格式;
  2. 开发工具中设置默认新建文件时的编码格式;
  3. mysql_query("set character set 'utf8'");          //读库

  4. mysql_query("set names 'utf8'");                  //写库

  5. default-character-set=utf8                         //MySQL配置文件"my.ini"编码设置
  6. init-connect=\'SET NAMES utf8\'                 //MySQL配置文件"my.ini"编码设置
  7. collation_server=utf8_unicode_ci               //MySQL配置文件"my.ini"编码设置
  8. character_set_server=utf8                       //MySQL配置文件"my.ini"编码设置
  9. default_charset = "UTF-8"                       //php配置文件"php.ini"编码设置
  10. header('Content-type:text/html;charset=utf-8');        //php 文件输出头
  11. header("Cache-Control:no-cache");                          //php文件输出头
  12. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />      //html页面中使用的编码

  13. 在phpMyAdmin中修改mysql中数据库,数据表及数据字段的字符编码格式;                //编码设为:utf8_general_ci
  14. 数据库执行语句 :CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  15. <script type="text/javascript" src="*****.js" charset="utf-8"></script> ---在js引入时加入
  16. 待续...

 

示例代码1:
 $mysqli=new mysqli("localhost", "mysql_user", "mysql_pwd", "mydb");  //建立mysqli对象
      //执行SQL语句从用户表User中查询所有记录,保存在$User数组中 
 $mysqli->query("set names gb2312");
 if($result=$mysqli->query("SELECT id, name, sex, age, email FROM User")){
  while($row=$result->fetch_assoc()){                //循环从结果集中遍历每行数据
   $users[]=$row;                             //取出所有行都保存在同一个数组中
  }
  $rowNum=$result->num_rows;                    //将获取的数据行数保存在变量中
  $result->close();                                 //关闭结果集
 }
 $mysqli->close(); 

 示例代码2:

<?php 

$charset = "utf8";

$con = mysql_connect("localhost", "root", "");

mysql_query("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary", $con);

mysql_select_db("ecshop", $con);

$sql = "SELECT user_name, email FROM ecs_admin_user WHERE user_id = 4";
$result = mysql_query($sql, $con);
$array = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($con);

$name = $array["user_name"];
$email = $array["email"];

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<h1>你好, <?php echo $name; ?>!</h1>
<h2>你的邮件是:<a href="mailto:<?php echo $email; ?>"><?php echo $email; ?></a></h2>

</body>
</html>

 

 

补充: 
# Lang-abbv Charset     Language
#---------------------------------
en          ISO-8859-1  English
UTF-8       utf8        UTF-8
Unicode     ucs         Unicode
th          Cp874       Thai
ja          SJIS        Japanese
ko          Cp949       Korean
zh          Cp950       Chinese-Traditional
zh-cn       GB2312      Chinese-Simplified
zh-tw       Cp950       Chinese
cs          ISO-8859-2  Czech
hu          ISO-8859-2  Hungarian
hr          ISO-8859-2  Croation
pl          ISO-8859-2  Polish
ro          ISO-8859-2  Romanian
sr          ISO-8859-2  Serbian
sk          ISO-8859-2  Slovak
sl          ISO-8859-2  Slovenian
sq          ISO-8859-2  Albanian
bg          ISO-8859-5  Bulgarian
be          ISO-8859-5  Byelorussian
mk          ISO-8859-5  Macedonian
ru          ISO-8859-5  Russian
uk          ISO-8859-5  Ukrainian
ca          ISO-8859-1  Catalan
de          ISO-8859-1  German
da          ISO-8859-1  Danish
fi          ISO-8859-1  Finnish
fr          ISO-8859-1  French
es          ISO-8859-1  Spanish
is          ISO-8859-1  Icelandic
it          ISO-8859-1  Italian
nl          ISO-8859-1  Dutch
no          ISO-8859-1  Norwegian
pt          ISO-8859-1  Portuguese
sv          ISO-8859-1  Swedish
af          ISO-8859-1  Afrikaans
eu          ISO-8859-1  Basque
fo          ISO-8859-1  Faroese
gl          ISO-8859-1  Galician
ga          ISO-8859-1  Irish
gd          ISO-8859-1  Scottish
mt          ISO-8859-3  Maltese
eo          ISO-8859-3  Esperanto
el          ISO-8859-7  Greek
tr          ISO-8859-9  Turkish
he          ISO-8859-8  Hebrew
iw          ISO-8859-8  Hebrew
ar          ISO-8859-6  Arabic
et          ISO-8859-1  Estonian
lv          ISO-8859-2  Latvian
lt          ISO-8859-2  Lithuanian
                       

posted on 2014-05-08 01:56  lbsf  阅读(329)  评论(0编辑  收藏  举报

导航