繁体   English   中英

简化utf8_encode

[英]Simplifying utf8_encode

所以我试图找到一种快速的方法来显示我的数据库中的所有结果,但我似乎无法弄清楚为什么我需要在我的所有文本中添加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> <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()类型的函数。

确保您正在使用的所有堆栈都从db,web server,page meta等设置为UTF8,例如

ini_set('default_charset', 'utf-8')

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

正如@deceze指出的那样, 这个帖子使用$mysqli->set_charset('utf8');提供了正确的见解$mysqli->set_charset('utf8');

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

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

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

<meta charset="utf-8">

...在HTML中。

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

在PHP中错误地编码法语字符“GET”方法的可能重复

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

请看: 没有BOM的UTF-8和UTF-8有什么不​​同?

也许它可以帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM