• 关于在MySQL和PHP中同时使用utf8(windows 和 CentOS环境下配置不同)


    在MySQL中设置字符集为utf8后,在终端用mysql的命令进行插入和查询,均能正确显示汉字(如果默认字符集为latin,插入汉字会显示为??)

    但是通过php从数据库中读取时,显示为问号,而不是汉字,(此时已经在php页面的head中设置了<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>)

    另外测试了,在php中使用insert into语句在数据库中插入汉字,这个从php页面插入的汉字,可以在php页面上正常用select语句读取,显示为汉字,但是在终端中用mysql语句查询这条记录,显示为乱码。

    后来发现,在php页面调用数据库之前,需要先使用如下三条sql语句

    //连接数据库之后,执行查询或插入更新之前
    $db->query("set names 'utf8'");
    $db->query("set character_set_client=utf8");
    $db->query("set character_set_results=utf8");
    
    //然后再执行sql操作

    之后进行的查询和插入,修改等操作,均可在php页面和终端命令行中都正常显示为汉字。。

    之前在网上看到有人说set names 'utf8';相当于

    set character_set_client=utf8
    set character_set_results=utf8
    set character_set_connect=utf8


    相当于把这三个都执行了,但是我实践的结果是,只使用set names 'utf8'并不能满足需要。。client和result还是要设置。。

    另外windows的cmd中和CentOS的终端中,对字符集的设置有点区别

    show variables like 'character%';

    查看系统的字符集设置

    windows cmd 中 set character_set_client = gbk;

    依次设置后,如上图所示。(如果设置为utf8,则命令行中查询会显示乱码)

    CentOS下 set character_set_client = utf8;

    依次设置后,就ok了

  • 相关阅读:
    jquery ajax参数详解
    压缩解压函数实现
    WCF 大数据量如何从服务端传到客户端
    [DllImport("kernel32.dll")]
    Oracle数据库使用基础和实例
    Js常用的动态效果
    Js使用正则实现表单验证
    Oracle数据库理论知识
    HTML5,CSS3,JavaScript基础知识与使用
    速读《人月神话》
  • 原文地址:https://www.cnblogs.com/cybersword/p/2788417.html
Copyright © 2020-2023  润新知