显示所有特殊字符html/php


Display all special characters html/php

我有一个数据库,其中包含许多名称,包括具有特殊字符的外国名称,例如Ž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文件,做同样的过程,也许它会显示符号。