【发布时间】:2016-01-18 03:04:15
【问题描述】:
我试图在我的数据库中保护带有口音的西班牙语单词,但它不起作用,我已经尝试过:
1) 将排序规则从表和行更改为 utf8_spanish_ci 和 utf_unicode_ci.
2) 用
添加标题标签<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
3)添加
header("Content-Type: text/html;charset=utf-8");
在一个 php 标签中。
在我笔记本电脑的 xampp 服务器中执行此操作可以,但是当我将数据库上传到登录怪物服务器时,它不会正确保存口音。
编辑:这是我使用的连接:
private function Connect()
{
//$this->settings = parse_ini_file("settings.ini.php");
try
{
# Read settings from INI file, set UTF8
$this->pdo = new PDO('mysql:host=localhost;dbname=xxxxx;charset=utf8', 'xxxxx', 'xxxxxx', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
# We can now log any exceptions on Fatal error.
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
# Disable emulation of prepared statements, use REAL prepared statements instead.
$this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
# Connection succeeded, set the boolean to true.
$this->bConnected = true;
}
catch (PDOException $e)
{
# Write into log
echo $this->ExceptionLog($e->getMessage());
die();
}
}
编辑:
我无法保存重音,它显示为奇怪的字符,如 á = á
【问题讨论】:
-
将数据库排序规则更改为
utf8_general_ci,并将元内容类型设置为text/html; charset=utf-8 -
@Philipp Collation 对存储数据的字符集没有影响。 Collation 仅影响排序。此外,他已经在使用您建议他的元内容类型。
-
UTF-8 all the way through 的可能重复项,但我不会将其标记为接近投票,因为看起来您到目前为止所做的一切都是正确的。无论如何都值得一读
-
远程服务器上运行的是什么版本的 PHP?
-
那你解决了吗?还要检查您的数据是否没有损坏(请参阅我的答案中的注释)。