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了

  • 相关阅读:
    C#中的委托(delegate)用法简介 dodo
    SqlServer2000日志文件过大问题处理 dodo
    prototype.js 显示等待状态 dodo
    linux常用命令 dodo
    关于NavigateUrl中绑定Eval()方法时出现"服务器标记的格式不正确"的解决方法 dodo
    DataGridViewRowHeadersWidthSizeMode属性和ColumnHeadersHeightSizeMode属性 dodo
    注销时跳出框架 dodo
    DriveInfo类取得计算机的磁盘信息 dodo
    类序列化 dodo
    CutEditor在线编辑器的使用 dodo
  • 原文地址:https://www.cnblogs.com/cybersword/p/2788417.html
Copyright © 2011-2022 走看看