• 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

  • 相关阅读:
    IDEA 2021.1 推出语音、视频功能,边写代码边聊天
    HTML5实现首页动态视频背景
    前端项目自动化构建工具——Webpack入门教程
    JavaScript多线程及事件循环机制
    SVN迁移至Git,保留commit提交记录
    Windows平台下搭建自己的Git服务器
    SVN服务器搭建、备份及多服务器同步方案(Windows)
    全图文分析:如何利用Google的protobuf,来思考、设计、实现自己的RPC框架
    注册表修改右键菜单的说明
    powershell换行输出,换行输入命令,多行命令的执行
  • 原文地址:https://www.cnblogs.com/chuxin/p/2705688.html
Copyright © 2020-2023  润新知