[英]html entities get passed into database even when I use html_entity_decode
[英]Do I need to use HTML entities when storing data in the database?
我需要將特殊字符和符號存儲到mysql數據庫中。 所以要么我可以將它存儲為'ü'或將其轉換為html代碼,例如'ü'
我不確定哪個更好。
我也有像'♥','''這樣的符號。
請建議哪一個更好? 還建議是否有任何替代方法。
謝謝。
將數據原始保留在數據庫中。 在您需要HTML實體之前,請不要使用HTML實體。 您永遠不知道何時可能希望在其他地方使用您的數據,而不是在網頁上。
多年前引入了HTML實體,以便在傳輸不是二進制安全的情況下通過線路傳輸字符信息,以及用戶代理(瀏覽器)不支持傳輸層或服務器的字符集編碼的情況。
由於HTML實體僅包含非常基本的字符( &
, ;
, az
和0-9
),並且這些字符在大多數字符集中具有相同的二進制編碼,因此這些副作用非常安全。
但是,當您在數據庫中存儲某些內容時,您不會遇到這些問題,因為您通常處於控制狀態,並且您知道將文本存儲到數據庫中的方式和方式。
例如,如果對數據庫中的文本允許使用Unicode,則可以存儲所有字符,實際上沒有任何字符是特殊的。 請注意,您需要在此處了解您的數據庫,您可以遇到一些技術細節。 就像您不知道數據庫連接的字符集編碼一樣,因此您無法准確地告訴您的數據庫要存儲哪些文本。 但通常,您只需存儲文本並在以后檢索它。 沒什么特別的處理。
實際上,當您使用HTML實體而不是普通字符時,存在缺點:
ü
比LATIN-1,UTF-8,UTF-16或UTF-32中的ü
大得多。 當你混合這兩個概念時,真正的樂趣就開始了 你來到一個你真的不想進入的地方。 所以不要這樣做因為你不需要它。
我的建議會反映其他貢獻者, 在將特殊實體保存到數據庫時不要轉換它們。
反轉換的一些原因:
ü
在一個單詞中,將是[word]+ü+[/word]
,你必須對html等效的ü
=> [word]+ü+[/word]
進行字符串比較[word]+ü+[/word]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.