我尝试将数据库中的所有内容切换为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的编码。这些都没有奏效。我无法弄清楚出了什么问题。