簡體   English   中英

在數據庫中存儲數據時是否需要使用HTML實體?

[英]Do I need to use HTML entities when storing data in the database?

我需要將特殊字符和符號存儲到mysql數據庫中。 所以要么我可以將它存儲為'ü'或將其轉換為html代碼,例如'ü'

我不確定哪個更好。

我也有像'♥','''這樣的符號。

請建議哪一個更好? 還建議是否有任何替代方法。

謝謝。

將數據原始保留在數據庫中。 在您需要HTML實體之前,請不要使用HTML實體。 您永遠不知道何時可能希望在其他地方使用您的數據,而不是在網頁上。

多年前引入了HTML實體,以便在傳輸不是二進制安全的情況下通過線路傳輸字符信息,以及用戶代理(瀏覽器)不支持傳輸層或服務器的字符集編碼的情況。

由於HTML實體僅包含非常基本的字符( & , ;az0-9 ),並且這些字符在大多數字符集中具有相同的二進制編碼,因此這些副作用非常安全。

但是,當您在數據庫中存儲某些內容時,您不會遇到這些問題,因為您通常處於控制狀態,並且您知道將文本存儲到數據庫中的方式和方式。

例如,如果對數據庫中的文本允許使用Unicode,則可以存儲所有字符,實際上沒有任何字符是特殊的。 請注意,您需要在此處了解您的數據庫,您可以遇到一些技術細節。 就像您不知道數據庫連接的字符集編碼一樣,因此您無法准確地告訴您的數據庫要存儲哪些文本。 但通常,您只需存儲文本並在以后檢索它。 沒什么特別的處理。

實際上,當您使用HTML實體而不是普通字符時,存在缺點:

  • HTML實體消耗更多空間: ü 比LATIN-1,UTF-8,UTF-16或UTF-32中的ü大得多。
  • HTML實體需要進一步處理。 需要創建它們,並且在讀取時,需要對它們進行解析。 想象一下,您需要在數據庫中搜索特定文本,否則任何其他操作都需要額外處理。 那只是開銷。

當你混合這兩個概念時,真正的樂趣就開始了 你來到一個你真的不想進入的地方。 所以不要這樣做因為你不需要它。

我的建議會反映其他貢獻者, 在將特殊實體保存到數據庫時不要轉換它們。

反轉換的一些原因:

  • KISS原則 (我最大的理由不去做)
  • 大多數實體最終會在轉換之前消耗更多空間
  • 松散的搜索實體的能力ü在一個單詞中,將是[word]+ü+[/word] ,你必須對html等效的ü => [word]+ü+[/word]進行字符串比較[word]+ü+[/word]
  • 您的輸出可能會從HTML更改為說移動API等,這使轉換變得非常不必要。
  • 需要轉換數據輸入和輸出(如果您的輸出從純HTML更改為其他內容)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM