suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php - MySQL中utf8_unicode_ci乱码的问题

存进去的全是问号,类似下面这样。

当时因为页面显示正常(全部使用utf8编码,语言是php,查询之前也有加编码设置),就没太在意!

这次更好服务器后,页面的输出就全部是问号了,不明白原因,求指教!

试过的方法有:
在查询之前设置
mysql_query("set names 'utf8'");
mysql_query("set character_set_client=utf8");
mysql_query("set character_set_results=utf8");

迷茫迷茫2774 Tage vor509

Antworte allen(2)Ich werde antworten

  • 迷茫

    迷茫2017-04-10 13:15:06

    你可以使用phpmyadmin看看是不是存进去的真的是乱码。
    服务器编码,客户端编码,传输过程中编码保持一致。
    有时候在命令行连接mysql,中文会乱码,原因是命令行对utf8不支持

    补充:如果有phpmyadmin中看到是乱码,就是你程序和数据库设置的问题了:
    修改php.ini

    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    default-character-set=utf8

    命令行连接mysql乱码

    SET NAMES GB2312

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 13:15:06

    从你描述的情况来看很可能是新服务器上数据库字符集设置问题。

    mysql_query("set names 'utf8'")等同于:
    set character_set_client=utf8;
    set character_set_results=utf8;
    set character_set_connection=utf8;
    但是mysql在内部执行操作前会将连接字符集转换为内部操作字符集,顺序如下:
    1.使用每个数据字段的CHARACTER SET设定值;
    2.若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
    3.若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;(character_set_database)
    4.若上述值不存在,则使用character_set_server设定值。

    所以你可以将database和server字符集设置为utf8试一下,
    参考文章:http://www.laruence.com/2008/01/05/12...

    Antwort
    0
  • StornierenAntwort