为了账号安全,请及时绑定邮箱和手机立即绑定

重音字符问题(ADODB + MySQL + PHP)

重音字符问题(ADODB + MySQL + PHP)

PHP
千巷猫影 2023-10-21 10:11:48
我在开发一个无法放置重音字符的项目时遇到问题。我正在使用 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条经验 获得超5个赞

我已经确定了问题的原因。


即使将数据库、表和列配置为 UTF-8 / utf8_general_ci 并将 PHP 文件配置为 UTF-8,奇怪字符的问题仍然存在。


问题出在格式化文本的标准 PHP 函数中,包括:


strtolower()

strtoupper()

ucfirst()

ucwords()

当在带重音的文本中执行这些函数时(例如“acentuação”),它们的返回值会丢失。从我的整个项目中删除这些函数后,数据库中的奇怪字符问题不再发生(包括通过 PHP 和 MySQL Workbench 进行查询)。


我希望这可以帮助其他最终遇到与我相同问题的人。:)


注意:我花了很长时间才回答,因为我只能在将这些更改放入生产环境后才能验证此信息。


查看完整回答
反对 回复 2023-10-21
  • 1 回答
  • 0 关注
  • 54 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信