我在开发一个无法放置重音字符的项目时遇到问题。我正在使用 5.20.14 版本的 Adodb 连接到 MySQL 数据库。我有一个主配置文件,其中连接设置如下:$s_driver = "mysqli";$o_db = adoNewConnection($s_driver);$o_db->connect($s_dbhost,$s_dbuser,$s_dbpasswd,$s_dbname);$o_db->SetFetchMode(ADODB_FETCH_ASSOC);$o_db->setCharset("utf8");开发的所有文件均采用UTF-8编码,如下图所示:图片02注意:我使用 VsCode。所有作为页面的 PHP 文件的字符集元设置为 utf-8,如下图所示:<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">我的数据库配置为utf8,如下图所示:图片04这些表配置有 utf8 字符集,如下图所示:图5列配置为 utf8 字符集,如下图所示:图6注意:我添加了“NOT NULL”规则来忽略没有字符集配置的表。当执行查询以将信息包含在数据库中时,我运行如下:$s_query_incluir = "INSERT INTO agtb_ordensdeservicos(id_agenda, id_empresa, hora_ini, hora_fim, observacoes, tipo, csa) VALUES('".$a_post['add_id_os_dt_agenda']."', '".ID_EMP_ATUAL."', '".$a_post["add_os_hora_ini"]."', '".$a_post['add_os_hora_fim']."', '".$a_post['add_observacao']."', '".$a_post['add_os_tipo']."', '".$a_post['add_os_csa']."');";$o_db->execute($s_query_incluir);注意:在文件顶部,我包含配置文件,其中包含第一张图片中显示的信息。执行该操作后,数据库显示信息如下:图8在网站上查看信息时,显示如下:图9原文是这样的:图10
1 回答
杨魅力
TA贡献1811条经验 获得超6个赞
我已经确定了问题的原因。
即使将数据库、表和列配置为 UTF-8 / utf8_general_ci 并将 PHP 文件配置为 UTF-8,奇怪字符的问题仍然存在。
问题出在格式化文本的标准 PHP 函数中,包括:
strtolower()
strtoupper()
ucfirst()
ucwords()
当在带重音的文本中执行这些函数时(例如“acentuação”),它们的返回值会丢失。从我的整个项目中删除这些函数后,数据库中的奇怪字符问题不再发生(包括通过 PHP 和 MySQL Workbench 进行查询)。
我希望这可以帮助其他最终遇到与我相同问题的人。:)
注意:我花了很长时间才回答,因为我只能在将这些更改放入生产环境后才能验证此信息。
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报
0/150
提交
取消