PHP / MySQL中的特殊字符

我在数据库中包含特殊字符(大部分西班牙语,如波浪号)。
在数据库中,所有内容都可以保存并使用PHPmyAdmin正确显示,但是当我获取数据(使用PHP)并在浏览器中显示时,我会收到一个奇怪的字符,如“?”有一个正方形
我需要一个一般的修复,所以我不需要每次转义每个字符,我也可以从PHP表单插入特殊的西班牙字符到数据库…

HTML是正确的:

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

所有表和数据库设置为utf8_spanish

我得到的人物:

有什么建议么???

谢谢!!!

我只想提供一些关于vartec提出的解决方案的更多细节(这取决于你的MySQL安装)是你问题的最正确的解决方案。
首先,MySQL中的字符集/编码问题是一个有点复杂的主题,这在MySQL手册Chapter 9.1 “Character Set Support”中有广泛的涵盖。在你的情况下,特别是9.1.4. “Connection Character Sets and Collations”将是最相关的。

简要说明:MySQL必须知道您的客户端应用程序的哪个字符集/编码(从您的PHP脚本的数据库persoective来讲)期望,因为它会从服务器上定义的内部字符集/编码转码所有字符串数据,数据库,表或列级连接到连接字符集/编码。您在客户端使用UTF-8,所以必须告诉MySQL您使用的是UTF-8。这是通过MySQL命令SET NAMES’utf8’完成的,它必须作为打开连接的第一个查询发送。根据您的安装以及您在PHP脚本中使用的MySQL客户端库,可以在每个连接上自动完成。

如果您使用PDO,则只需要设置一个配置参数

$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");

使用mysqli更改客户端字符集/编码更加简单:

$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");

我希望这将有助于使整个事情更容易理解。

http://stackoverflow.com/questions/633762/special-characters-in-php-mysql

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:PHP / MySQL中的特殊字符