宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見問題
產(chǎn)品動態(tài)
精選推薦

PHP 編解碼錯誤 Malformed UTF-8 characters, possibly incorrectly encoded.

管理 管理 編輯 刪除

說明

在使用 PHP 的時候,可能會遇到編解碼的錯誤。這里面的編解碼包括 BASE64、json_encode、json_decode 等。

下面是使用 YII2 框架,一個請求在返回數(shù)據(jù)的數(shù)據(jù)時候,出現(xiàn)的錯誤:

Malformed UTF-8 characters, possibly incorrectly encoded.

問題和解決方案

出現(xiàn)上面的問題,可能有下面幾種情況:

字符集不統(tǒng)一

編解碼前后使用的字符集不一致,導(dǎo)致編碼成一種字符集,解碼的時候是另一種字符集。要檢查編解碼前后的字符集是否一致。

可以使用下面的一些函數(shù)進行檢查。

# 設(shè)置內(nèi)部字符編碼為 UTF-8 
mb_internal_encoding("UTF-8");

# 顯示當(dāng)前的內(nèi)部字符編碼
echo mb_internal_encoding();

# 檢測 HTTP 輸入字符編碼
mb_http_input()

# 設(shè)置/獲取 字符編碼的檢測順序
mb_detect_order()
# 設(shè)置/獲取 HTTP 輸出字符編碼
mb_http_output()
# 設(shè)置/獲取多字節(jié)正則表達(dá)式的字符編碼
mb_regex_encoding()

全局設(shè)置指定的字符集

方法1:代碼中設(shè)置成 UTF-8 字符集:

mb_internal_encoding("UTF-8")

方法2:在 php.ini 中設(shè)置

mbstring.internal_encoding = UTF-8

字符集轉(zhuǎn)換

將指定字符串從 encoding2 字符集轉(zhuǎn)換成encoding1 字符集。

mb_convert_encoding($str, $encoding1, $encoding2);

參數(shù)說明
str:要轉(zhuǎn)換編碼的字符串;encoding1:目標(biāo)編碼,如utf-8,gbk,大小寫均可;

$encoding2:原編碼,如utf-8,gbk,大小寫均可。

案例一

$str='你好,世界';
// 編碼轉(zhuǎn)換為utf-8
echo mb_convert_encoding($str, "UTF-8");

案例二

$str='你好,世界';
// 已知原編碼為GBK,轉(zhuǎn)換為utf-8
echo mb_convert_encoding($str, "UTF-8", "GBK"); 

案例三

$str='你好,世界';
// 把 GBK,GB2312,BIG5 這幾種編碼轉(zhuǎn)成 UTF-8 編碼。
$content = mb_convert_encoding($str, 'UTF-8', 'GBK,GB2312,BIG5');

案例四

$str='你好,世界';
// 未知原編碼,通過auto自動檢測后,轉(zhuǎn)換編碼為utf-8
echo mb_convert_encoding($str, "UTF-8", "auto");

不可編碼的數(shù)據(jù)

在使用 json 進行編碼的時候,編碼的數(shù)據(jù)可能經(jīng)過 base64 進行解碼,但是原數(shù)據(jù)可能不是 base64 編碼的,因此會導(dǎo)致 base64 解碼錯誤,然后再使用 json 進行 json_encode 等編碼時,出現(xiàn)上面的錯誤。

該問題需要檢查進入 json_encode 的數(shù)據(jù),是否是正常數(shù)據(jù),如果操作的數(shù)據(jù)不是正常字符數(shù)據(jù),json_encode 可能會返回空,也可能會返回 true、false 之類的數(shù)據(jù),也可能報錯。

在 YII2 中,如果返回的是 JSON 格式的數(shù)據(jù),框架在執(zhí)行 Respnose 方法的時候,會調(diào)用

BaseJson.php 中的 encode 方法:

BaseJson::encode($str);

如果 $str 數(shù)據(jù)不是正常數(shù)據(jù),此處也會報上面的錯誤。

所以要檢查好 json_encode 的數(shù)據(jù)是否是正常數(shù)據(jù)。


請登錄后查看

CRMEB-慕白寒窗雪 最后編輯于2023-06-12 18:40:53

快捷回復(fù)
回復(fù)
回復(fù)
回復(fù)({{post_count}}) {{!is_user ? '我的回復(fù)' :'全部回復(fù)'}}
排序 默認(rèn)正序 回復(fù)倒序 點贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無簡介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復(fù) {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)
查看更多
打賞
已打賞¥{{reward_price}}
7357
{{like_count}}
{{collect_count}}
添加回復(fù) ({{post_count}})

相關(guān)推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見問題 產(chǎn)品動態(tài) 精選推薦 首頁頭條 首頁動態(tài) 首頁推薦
取 消 確 定
回復(fù)
回復(fù)
問題:
問題自動獲取的帖子內(nèi)容,不準(zhǔn)確時需要手動修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當(dāng)前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認(rèn)打賞

微信登錄/注冊

切換手機號登錄

{{ bind_phone ? '綁定手機' : '手機登錄'}}

{{codeText}}
切換微信登錄/注冊
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服