我有一个数据库,其中包含许多名称,包括具有特殊字符的外国名称,例如Žigić
当回显这些名称时,一些字符显示为问号,其中一些显示为问号,因为我使用的是字符集ISO-8859-1
例如,当我从数据库回显名称Žigić时,它看起来像这样:
Žigi吗?
我目前正在使用这段代码来尝试启用所有特殊字符
<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,您可以添加以下内容到head标签:
<meta charset="utf-8">
编辑:看到你使用$db
让我做出错误的假设,你正在使用PDO。正如你的问题的另一个答案中所指定的,你应该使用mysqli_set_charset来为你与MySQL的连接设置charset。数据库的排序规则应该与接收数据的编码无关,只要它具有所需的字符即可。
总而言之,只要确保用于连接数据库和HTML输出的字符集的一致性,只要选择的字符集包含所需的字符,就应该没问题。
您还需要设置database<->php传输编码:
mysqli_set_charset("utf8");
在进行任何查询之前。保持页面编码声明为UTF-8,因为您的数据现在将是UTF-8。
这可能是错误的,但我去年有这个问题,在常规文本pad或word pad中打开它看看你输出查询的地方旁边是否有空格我做了,它去掉了它们
或者下载你的数据库,用这些程序打开SQL文件,做同样的过程,也许它会显示符号。