gpt4 book ai didi

php - 如何使用 CodeIgniter 在 MySQL 中插入 HTML 实体?

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:40 25 4
gpt4 key购买 nike

我正在使用 CodeIgniter/MySQL 创建一个应用程序。问题是当我存储带有引号或撇号的文本时。它向 MySQL 数据库存储一个空白值。

function add_article($title, $desc){
$data = array(
'title' => htmlentities($title, ENT_QUOTES, "UTF-8"),
'desc' => htmlentities($desc, ENT_QUOTES, "UTF-8")
);
if($this->db->insert('articles', $data)){
return TRUE;
} else {
return FALSE;
}
}

我的表“articles”的字符集是“utf8”,COLLATE 是utf8_unicode_ci。而HTML字符集也是UTF-8。怎么了?请帮助我,并在此先感谢。如果我不使用 htmlentities() 函数,我将面临两个问题,我在下面的评论中提到了这两个问题:

最佳答案

您可能在输入输出 上遇到问题。

输入时

首先,确保您收到的字符串实际上 utf-8。

  • 如果您从表单接收数据,请将 accept-encoding="utf-8" 添加到 form 元素。
  • 使用 TRUE===mb_check_encoding($string, 'UTF-8')
  • 验证您的输入字符串是否是有效的 utf-8 流
  • 通过计算字符数来检查字节序列是否符合预期:mb_strlen($string, 'UTF-8') 应该返回与您看到的相同数量的字符,并且少于strlen($string)(计算字节数)。

在您的 application/config/database.php 中,确保您的数据库连接具有以下两个设置:

$db[$dbgroupname]['char_set'] = "utf8";
$db[$dbgroupname]['dbcollat'] = "utf8_unicode_ci";

$dbgroupname 替换为您连接的组名(例如,'default')。

在存储数据之前,不要对数据使用 htmlspecialcharshtmlentities。在您的 View 中将它们用于输出。

关于输出

确保无论您使用什么来查看来自数据库的数据都需要 utf-8 编码。

对于 html,请确保您的 Content-Type header 包含 charset=utf8 并且您的 html 文档的 head 如下所示:

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

在多个浏览器中检查您的结果。某些浏览器会进行字符集嗅探,并可能会选择与您声明的字符集不同的字符集。如果是这样,这意味着您页面上的某些内容不是有效的 UTF-8 - 找到并删除该内容。

如果您使用某种数据库查看器(PHPMyAdmin、Navicat 等),请确保连接配置为期望使用 utf-8。

关于php - 如何使用 CodeIgniter 在 MySQL 中插入 HTML 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com