zoukankan      html  css  js  c++  java
  • PHP与MySql乱码原因汇总

    GB2312和UTF-8两个字符集的区别:
    GB2312是标准中文字符集,UTF-8 是UNICODE 的一种变长字符编码,即RFC 3629,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。UTF-8 是字节顺序无关的,它的字节顺序在所有系统中都是一样的,排序更加容易。因此 UTF-8 具有更高的性能。不过如果是纯英文的话,用什么都可以,用GB2312也没问题。

    MYSQL+php产生乱码有以下几个原因:
    1. MYSQL 数据库默认的编码是latin1 -- cp1252 West European,最好将其改为utf-8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.
    2. MYSQL 创建表时会让你选择一种编码 ,如果这种编码与你的网页编码不一致, 很有可能造成MYSQL乱码.
    3. MYSQL 创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,很有可能造成MYSQL乱码.
    4. 用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.
    5. 如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.
    6. PHP页面字符集不正确.
    7. PHP连接MYSQL数据库语句指定的编码不正确. 

     

    解决方法:
    拿UTF8来举例
    1、 保证页面的编码
    如果是html 那么别忘了在 文件开头写上
    <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
    如果是 php那么 记得在文件最上方写上
    header(”Content-type: text/html;charset=utf-8″);
    同时必须保证文件的编码必须是 UTF-8.
    解决方法:把文件用EditPlus或者UltraEdit等软件打开,把文件另存为,注意选择字符编码方式,选择UTF-8.

    2、 保证数据库是UTF8
    在添加表的时候,需要设置编码为UTF-8
    如果已经添加了,那么可以在PHPMYADMIN 中查看表结构的‘整理’属性上是否为 utf8_general_ci
    如果不是 请修改
    ALTER TABLE `chuxin_gb2312`

    DEFAULT CHARACTER SET=utf8;
    数据库和字段 的编码同理:
    ALTER DATABASE `mysqlcharsettest` DEFAULT CHARACTER SET=utf8;
    ALTER TABLE `chuxin_gb2312` MODIFY COLUMN `send`  varchar(40) CHARACTER SET utf8 NOT NULL AFTER `id`;

    3、 PHP在连接数据库的时候加上一句: set names utf8
    mysql_connect(’localhost’,'user’,'password’);
    mysql_select_db(’ mysqlcharsettest’);
    mysql_query(”set names utf8;”); //**设置字符集***

    其它情况:

    在本机开发好的MySQL数据表,在本机测试一切正常,但用网站空间商提供的PHPmyAdmin上传时却出现问题,上传失败。尤其是使用国外PHP空间。
    解决方法:首先查看网站空间商提供的PHPmyAdmin字符集设定,确定自己所建数据表与服务商的是同一编码。在国外MySQL是不支持gb2312 的,甚至最新版的Apache也不支持gb2312。如果是因为编码不统一,可以重建数据表,当然是用国际标准的UTF8.

    附上本机测试成功代码:demo

  • 相关阅读:
    成为 Team Leader 后我最关心的那些事
    《管理的实践》读书心得
    玩黑客学校CTF
    DHCP中继器
    test
    初窥XSS跨站脚本攻击
    TCP/IP模型
    逻辑漏洞-客户端验证的邮箱-Web渗透实例之中国教育部青少年普法网站逻辑漏洞
    逻辑漏洞-支付风险-大疆某处支付逻辑漏洞可1元买无人机
    逻辑漏洞-密码找回之验证码发给了客户端
  • 原文地址:https://www.cnblogs.com/chuxin/p/2705688.html
Copyright © 2011-2022 走看看