我有一个数据库,里面有很多名字,包括有特殊字符的外国名字,例如
当回显这些名称时,有些字符显示为问号,有些字符显示为问号,因为我使用的是字符集ISO-8859-1
例如,当我从数据库中回显名称igigić时,它显示为:
伊吉?
我正在使用此代码尝试启用所有特殊字符
<meta charset="iso-8859-1">
我试过UTF-8,但这个名字印成这样:
�igi?
这是我试图使用的完整代码:
$getPlayerStats = $db->query("SELECT * FROM `playerstats` WHERE `playerid` = '".$_GET['id']."'");
echo '<meta charset="iso-8859-1"><table border="1">
<tr>
<td>First Name</td>
<td>Second Name</td>
</tr>';
while ($playerStats = mysqli_fetch_array($getPlayerStats))//Loop it.
{
echo '<tr>';
echo '<td>'.$playerStats['firstname'].'</td>';
echo '<td>'.$playerStats['lastname'].'</td>';
echo '</tr>';
}
echo '</table>';
注意这个问题不仅仅是一个字符或一个名字,名字数据库包含数百个名字。
有人能帮我吗,谢谢。
最佳答案
为了在整个项目中保持统一的UTF-8编码,
尝试
$pdo->exec('set names utf8');
在查询之前,或者理想情况下将字符集追加到连接字符串,如下所示:
"mysql:host=$host;dbname=$db;charset=utf8"
并删除此部分:
<meta charset="iso-8859-1">
请确保页面的编码为UTF-8,可以将以下内容添加到头标记:
<meta charset="utf-8">
编辑:看到你使用
$db
让我错误地假设你正在使用PDO。正如您问题的另一个答案中所指定的,您应该使用mysqli_set_charset来设置与MySQL连接的字符集。数据库的排序规则与接收数据的编码方式无关,只要它具有所需的字符。总而言之,只要确保用于连接数据库和HTML输出的字符集的一致性,只要选择的字符集具有所需的字符,就可以了。
关于php - 显示所有特殊字符html/php,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15725940/