请教有关php+mysql乱码的问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

请教有关php+mysql乱码的问题

2016-06-12 10:44:20 2063 1

因为服务器提供商的原因只能通过phpMyadmin管理数据库。使用show variables语句查询得到的当前数据库的信息如下:

character_set_client latin1
character_set_connection utf8
character_set_database utf8
character_set_results latin1
character_set_server latin1
character_set_system utf8
collation_connection utf8_unicode_ci
collation_database utf8_unicode_ci
collation_server latin1_swedish_ci

我写了一个测试文件mytest.php代码如下(文件编码为UTF-8):

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
    </head>
<body>
<?php
    print "Hello";
    $connection = mysql_connect('host','dbname','dbpass');
    mysql_select_db('obbdb', $connection);
    mysql_query("SET NAMES 'utf8'", $connection);
    mysql_query("SET CHARACTER SET utf8", $connection);
    mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $connection);
    mysql_query("SET SQL_MODE = ''", $connection);
    $result = mysql_query ("SELECT * FROM navigator", $connection);
    while ($row = mysql_fetch_array($result, 10)) 
    {
        foreach ($row as $attribute) {
            print "{$attribute}";
            print "\n";
        }
    }
?>
</body>
</html>

显示的是乱码。
如果修改代码如下,并将文件的编码改为ANSI。则能正常显示

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
<body>
<?php
    print "Hello";
    $connection = mysql_connect('host','dbname','dbpass');
    mysql_select_db('obbdb', $connection);
//    mysql_query("SET NAMES 'utf8'", $connection);
//    mysql_query("SET CHARACTER SET utf8", $connection);
//    mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $connection);
    mysql_query("SET SQL_MODE = ''", $connection);
    $result = mysql_query ("SELECT * FROM navigator", $connection);
    while ($row = mysql_fetch_array($result, 10)) 
    {
        foreach ($row as $attribute) {
            print "{$attribute}";
            print "\n";
        }
    }
?>
</body>
</html>

请问这是什么原因导致的乱码?如果要解决这个问题要怎么操作?

取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 19:33:25

    统一编码吧。mysql全用utf8,php文件只要是utf8就行了,不要另外设置编码。
    解决办法:
    3.修改my.ini,在[client]、[mysqld]、[mysql]后面加default-character-set = utf8,在[mysqld]下加,basedir、datadir。

    [client]
    default-character-set = utf8
    [mysqld]
    default-character-set = utf8
    default-collation=utf8_bin
    init_connect='SET NAMES utf8'
    basedir=D:\mysql\
    datadir=D:\mysql\data\
    [mysql]
    default-character-set=utf8

    补充:这服务商也够变态的,数据库都utf8了,连接时也是utf8,返回的结果却用latin1。你的原因就出来这。如果不能更改服务器配置,你把返回的结果用iconv转成utf8试试应该就好了。

    0 0
相关问答

20

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 1226778浏览量 回答数 20

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 232386浏览量 回答数 170

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 159467浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 340552浏览量 回答数 8

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 148561浏览量 回答数 22

2

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 133194浏览量 回答数 2

39

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 262948浏览量 回答数 39

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 193547浏览量 回答数 21

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 309427浏览量 回答数 251

97

回答

Redhat/CentOS一键安装web环境全攻略

xiaofanqie 2011-08-11 14:51:38 124761浏览量 回答数 97
+关注
落地花开啦
喜欢技术,喜欢努力的人
0
文章
7824
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载