zoukankan      html  css  js  c++  java
  • 关于在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了

  • 相关阅读:
    linux tcp调优
    nginx 代理http配置实例
    nginx代理socket tcp/udp
    C++对象数组初始化
    《大型网站技术架构》读书笔记
    内核空间、用户空间和虚拟地址(转)
    集群——LVS理论(转)
    Linux服务器集群系统(一)(转)
    从一个开发的角度看负载均衡和LVS(转)
    ubuntu下允许root用户ssh远程登录
  • 原文地址:https://www.cnblogs.com/cybersword/p/2788417.html
Copyright © 2011-2022 走看看