php htmlentities導致中文無法查詢

2021-08-27 18:06:50 字數 1226 閱讀 1210

在php中htmlspecialchars, 將特殊字元轉成 html 格式,而htmlentities,將所有的字元都轉成 html 字串 了,下面我來分別簡單的介紹。

htmlentities用法

$str = "john & 'adams'"; 

echo htmlentities($str, ent_compat); 

echo " 

"; echo htmlentities($str, ent_quotes); 

echo " 

"; echo htmlentities($str, ent_noquotes); 

?> 

john & 'adams'

john & 'adams'

john & 'adams'

瀏覽器輸出: 

htmlspecialchars用法

& (和) 轉成 &

" (雙引號) 轉成 "

< (小於) 轉成 <

> (大於) 轉成 >

例$str = "john & 'adams'"; 

echo htmlspecialchars($str, ent_compat); 

echo " 

"; echo htmlspecialchars($str, ent_quotes); 

echo " 

"; echo htmlspecialchars($str, ent_noquotes); 

?> 

他們的區別

這兩個函式的功能都是轉換字元為html字元編碼,特別是url和**字串。防止字元標記被瀏覽器執行。使用中文時沒什麼區別,但htmlentities會格式化中文字元使得中文輸入是亂碼

htmlentities轉換所有的html標記,htmlspecialchars只格式化& ' " < 和 > 這幾個特殊符號

效果:

$str = '測試頁面';

echo 'htmlentities指定gb2312編碼:'.htmlentities($str,ent_compat,"gb2312").'';

echo 'htmlentities未指定編碼:'.htmlentities($str).'';

$str = '測試頁面';

echo htmlspecialchars($str).'';

listagg 函式導致中文亂碼

1.背景 oracle 12.2c 資料庫匯入到oracle 12.1c 資料庫後,通過listagg的函式中文亂碼,不太清楚是為什麼,兩個資料庫編碼都一樣,表結構與資料都是直接導過來的 現象 listagg p.c name,within group order by p.c name over ...

mbstring擴充套件導致中文亂碼

本文目的 mbstring是php的乙個標準擴充套件,源 在php src ext mbstring中。主要用於處理多位元組編碼的字串,如utf 8,gbk等。php內建的字串處理函式 如strlen等 將字串當作位元組陣列處理,如果直接用來處理中文,可能會導致中文亂碼 中文編碼方式可以參考這篇文章...

修改profile導致Fedora無法登陸

fedora14系統下安裝jdk後配置環境變數時,一時大意,將etc profile檔案配置錯了,導致系統重啟後無法進入登陸介面。裡面安裝的軟體太多,重灌系統工程太大了。一番谷歌之後,發現用單使用者模式 類似於window下的安全模式 登陸後重新修改profile檔案即可,現將過程記錄如下,方便日後...