【发布时间】:2013-11-04 16:14:56
【问题描述】:
所以我试图找到一种快速的方法来显示我的数据库中的所有结果,但我似乎无法弄清楚为什么我需要将utf8_encode() 函数添加到我的所有文本中以显示我所有的角色都正常。
为了记录,我的数据库信息是法语和英语,所以我需要特殊字符,包括 à、ç、è、é、ê、î、ö、ô、ù(等等)。
我的表单页面有以下标签:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
我的数据库、我的所有表格和所有字段都设置为utf8_general_ci。
当我想在页面上回显数据库信息时,我使用这个查询:
public function read_information()
{
global $db;
$query = "SELECT * FROM table WHERE id='1' LIMIT 1";
return $db->select($query);
}
并像这样返回信息:
$info = $query->read_information();
<?php foreach ( $info as $dbinfo ) { ?>
<pre><?php echo $dbinfo->column; ?></pre>
<?php } ?>
但是,如果我的字符串中有法语字符,我需要<pre><?php echo utf8_encode($info->column); ?></pre>,这是我真正想要避免的。
我已经阅读了 PHP.net 上有关 utf8_encode/utf8_decode、htmlentities/html_entity_decode 等的文档。但是,我似乎无法弄清楚为什么我需要为每个数据库结果添加一个特殊函数。
我也尝试过使用mysqli_query("SET NAMES 'utf8'", $mysqli);,但这并不能解决我的问题。我想我正在寻找的是某种快捷方式,我不必创建像make_this_french_friendly() 这样的功能。
【问题讨论】:
-
在这里查看我的 UTF-8 清单:stackoverflow.com/a/19769221/1242470
-
您可以尝试使用
$db->set_charset("utf8");,它已经多次保存了我的“you know what”。