cyrillic显示在db中,显示为???在网站上

时间:2015-02-17 04:19:00

标签: php mysql utf-8

我尝试将数据库中的所有内容切换为UTF8,因为某些字符没有显示出来。我将数据库中的所有内容,所有列排序规则,表格等都切换到了 utf8_general_ci。我确保我的header.php将字符集指定为UTF8:

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

我添加了

AddDefaultCharset UTF-8

到.htaccess。我制作了一个php.ini文件并放入

default_charset = "utf-8"
mbstring.internal_encoding=utf-8
mbstring.http_output=UTF-8
mbstring.encoding_translation=On
mbstring.func_overload=6

在里面。我还将数据库中的所有内容导出为utf8,删除所有内容并导入。在数据库本身中,字符显示正确。一切看起来都很棒。但是在网站上,在本地和现场环境以及FF,Chrome和IE上,只有?????。我做的最后一件事是进入我的config.php并直接编辑数据库内容。

<?php
ob_start();
if(!isset($_SESSION)) 
    { 
        session_start(); 
    } 

//set timezone
date_default_timezone_set('America/Denver');

//database credentials
define('DBHOST','localhost');
define('DBUSER','root');
define('DBPASS','');
define('DBNAME','dbname');
define('CHARSET', 'utf8');

//application address
define('DIR','http://websiteurlcom');
define('SITEEMAIL','email@whatever.com');

try {

    //create PDO connection 
    $db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME, DBUSER, DBPASS.";charset=".CHARSET);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {
    //show error
    echo '<p class="bg-danger">'.$e->getMessage().'</p>';
    exit;
}

//include the user class, pass in the database connection
include('classes/user.php');
$user = new User($db); 
?>

我还运行了查询:

SET NAMES utf8

直接在数据库中。我检查了Notepad ++(没有BOM的utf8)和Brackets的编码。这些都没有奏效。我无法弄清楚出了什么问题。

0 个答案:

没有答案