我在開發(fā)一個(gè)無法放置重音字符的項(xiàng)目時(shí)遇到問題。我正在使用 5.20.14 版本的 Adodb 連接到 MySQL 數(shù)據(jù)庫(kù)。我有一個(gè)主配置文件,其中連接設(shè)置如下:$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");開發(fā)的所有文件均采用UTF-8編碼,如下圖所示:圖片02注意:我使用 VsCode。所有作為頁(yè)面的 PHP 文件的字符集元設(shè)置為 utf-8,如下圖所示:<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">我的數(shù)據(jù)庫(kù)配置為utf8,如下圖所示:圖片04這些表配置有 utf8 字符集,如下圖所示:圖5列配置為 utf8 字符集,如下圖所示:圖6注意:我添加了“NOT NULL”規(guī)則來忽略沒有字符集配置的表。當(dāng)執(zhí)行查詢以將信息包含在數(shù)據(jù)庫(kù)中時(shí),我運(yùn)行如下:$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);注意:在文件頂部,我包含配置文件,其中包含第一張圖片中顯示的信息。執(zhí)行該操作后,數(shù)據(jù)庫(kù)顯示信息如下:圖8在網(wǎng)站上查看信息時(shí),顯示如下:圖9原文是這樣的:圖10
1 回答

楊魅力
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
我已經(jīng)確定了問題的原因。
即使將數(shù)據(jù)庫(kù)、表和列配置為 UTF-8 / utf8_general_ci 并將 PHP 文件配置為 UTF-8,奇怪字符的問題仍然存在。
問題出在格式化文本的標(biāo)準(zhǔn) PHP 函數(shù)中,包括:
strtolower()
strtoupper()
ucfirst()
ucwords()
當(dāng)在帶重音的文本中執(zhí)行這些函數(shù)時(shí)(例如“acentua??o”),它們的返回值會(huì)丟失。從我的整個(gè)項(xiàng)目中刪除這些函數(shù)后,數(shù)據(jù)庫(kù)中的奇怪字符問題不再發(fā)生(包括通過 PHP 和 MySQL Workbench 進(jìn)行查詢)。
我希望這可以幫助其他最終遇到與我相同問題的人。:)
注意:我花了很長(zhǎng)時(shí)間才回答,因?yàn)槲抑荒茉趯⑦@些更改放入生產(chǎn)環(huán)境后才能驗(yàn)證此信息。
- 1 回答
- 0 關(guān)注
- 121 瀏覽
添加回答
舉報(bào)
0/150
提交
取消