代码之家  ›  专栏  ›  技术社区  ›  Adriana

使用PHP+MySQL的utf-8编码问题

  •  17
  • Adriana  · 技术社区  · 16 年前

    我把数据从 (它们最初设置为 latin2 encoding )至 MySQL5数据库 并将编码设置为 utf-8 . 穿起来很好看 phpMyAdmin ,和 utf-8型 没关系。然而,有问号,而不是一些字符在网站上!网站编码也设置为 utf8

    菲律宾比索 和 HTML格式 utf8型 .

    我不知道。。。

    10 回复  |  直到 13 年前
        1
  •  30
  •   Saty    11 年前

    尝试查询

    SET NAMES utf8
    

    在应用程序中进行任何查询之前

        2
  •  21
  •   Jonathan Cross    11 年前

    在我的服务器上,将这些添加到我的php文件没有任何效果:

    ini_set('default_charset','utf-8');
    mysql_set_charset('utf8');
    header('Content-type: text/html; charset=utf-8');
    

    但当我将这个添加到php文件的顶部时,一切都运行得很好:

    $mysqli->query("SET NAMES 'utf8'");
    

    utf8_general_ci 在我的数据库里,但是 utf8_unicode_ci 对我也一样。

        3
  •  13
  •   Franz    16 年前

    尝试将MySQL连接设置为UTF-8:

    SET NAMES 'utf8'
    

    并发送显式的UTF-8标头,以防您的服务器有其他默认设置:

    header('Content-type: text/html; charset=utf-8');
    
        4
  •  3
  •   mauris    16 年前

    您只需将输出编码设置为UTF-8,浏览器就会正确显示。

    在HTML中:

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    

    在PHP中:

    header('Content-Type: text/html; charset=UTF-8');
    

    当您从MySQL表中得到一个UTF-8字符串时,除非您转换编码,否则它将一直是UTF-8到浏览器输出。这是浏览器的解释方式。

        5
  •  2
  •   Aliaksandr Harbunou    16 年前

    将.htaccess文件放入网站根目录中,内容如下: 添加默认字符集UTF-8

    和

    mysql\u query(“SET NAMES'utf8'”);

        6
  •  2
  •   animuson    14 年前

    header ('Content-type: text/html; charset=utf-8'); utf8_decode($content) . 你必须有这两个才能成功。

        7
  •  2
  •   Sebastián Grignoli    13 年前

    当您在网站上显示UTF8字符,但告诉浏览器将其解释为拉丁文1(或拉丁文2)时,您会看到这种胡言乱语: ß

    所以我猜你把所有东西都换成了UTF8(我的意思是,你告诉DB引擎、web服务器和浏览器你将使用UTF8),但是你实际上没有把字符串转换成UTF8。

        8
  •  2
  •   Fahri Akar    12 年前
    mysql_query("SET NAMES UTF8");
    

    在“我的”结尾添加此行连接.php“解决了我的问题。

    我的连接文件的完整代码是:

    <?php
    # FileName="Connection_php_mysql.htm"
    # Type="MYSQL"
    # HTTP="true"
    $hostname_test = "localhost";
    $database_test = "test";
    $username_test = "username";
    $password_test = "password";
    $test = mysql_pconnect($hostname_test, $username_test, $password_test) or trigger_error(mysql_error(),E_USER_ERROR); 
    mysql_query("SET NAMES UTF8");
    ?>
    

        9
  •  1
  •   Darkerstar    16 年前

    我最近遇到了这个问题(我希望这和你现在遇到的问题是一样的),我尝试了很多方法,但最后都很简单。

    将转储的SQL文件转换为UTF-8格式,然后导入它。

        10
  •  1
  •   user3314053    11 年前

    在MySQL中,似乎并没有将每个SQL数据库、表和字段都设置为UTF-8,这已经足够好了。很烦人。

    最终迫使问题解决编码问题:

    $db->设置字符集(“utf8”);