【问题标题】:Simplifying utf8_encode简化 utf8_encode
【发布时间】: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 } ?>

但是,如果我的字符串中有法语字符,我需要&lt;pre&gt;&lt;?php echo utf8_encode($info-&gt;column); ?&gt;&lt;/pre&gt;,这是我真正想要避免的。

我已经阅读了 PHP.net 上有关 utf8_encode/utf8_decode、htmlentities/html_entity_decode 等的文档。但是,我似乎无法弄清楚为什么我需要为每个数据库结果添加一个特殊函数。

我也尝试过使用mysqli_query("SET NAMES 'utf8'", $mysqli);,但这并不能解决我的问题。我想我正在寻找的是某种快捷方式,我不必创建像make_this_french_friendly() 这样的功能。

【问题讨论】:

标签: php utf-8


【解决方案1】:

确保您正在使用的所有堆栈都从数据库、Web 服务器、页面元等设置为 UTF8 检查诸如

之类的东西
ini_set('default_charset', 'utf-8')

根据我的经验应该输出简单的东西

【讨论】:

    【解决方案2】:

    正如@deceze 指出的那样,this thread 使用$mysqli-&gt;set_charset('utf8'); 提供了正确的见解。

    【讨论】:

      【解决方案3】:

      也许对您的文件使用不带 BOM 编码的 UTF-8?

      header('Content-type: text/html; charset=utf-8');
      

      ... 在 PHP 中(您也可以使用“ini_set()”函数)和:

      <meta charset="utf-8">
      

      ...在 HTML 中。

      您还必须为您的数据库表设置正确的编码。

      "GET" method encoding French characters incorrectly in PHP 可能重复

      【讨论】:

        【解决方案4】:

        也许您的文本编码不是 UTF-8。

        请看:What's different between UTF-8 and UTF-8 without BOM?

        也许它可以帮助你。

        【讨论】:

          猜你喜欢
          • 2013-02-14
          • 2011-10-05
          • 2016-11-15
          • 2011-11-14
          • 1970-01-01
          • 2022-01-20
          • 2015-12-04
          • 2011-07-26
          • 2016-11-02
          相关资源
          最近更新 更多