特殊字符我在Perl,Apache和MySQL開發的遺留應用程序。出現在HTML格式
一些在用於字符應用顯示HTML碼的部分。的問題是獨立於鍵盤上的以下特點:
- 分號
- 逗號
- 引號
- 比符號
- 比符號
這張桌子是s tores這個數據也存儲這樣的數據本身。該表是CHARSET = latin1。
該應用程序是在HTML呈現使用
<meta charset="utf-8" />
。
我的問題是「如何解決這個問題?」
- 我應該對數據庫字符集進行一些更改嗎? (我在應用程序中有多個 的地方,在多個部分使用多個表 )
- 我應該在PERL數據庫連接中進行一些更改嗎? (這看起來像處理問題的最佳場所,因爲這對於任何使用數據庫交互的模塊來說都很常見),因此它將對特殊字符進行解碼/編碼。
任何其他建議?
數據如何存儲在數據庫中?是否有一些代碼可以轉換實際的用戶輸入,例如Ascii撇號(')被轉換爲'&#39:'? (這樣做沒有真正的理由,但遺留代碼通常會做一些奇怪的事情。)數據庫中的數據如何插入到HTML文檔中?如果你只是插入'&#39:',它會顯示爲Ascii撇號,所以代碼必須做其他事情。 – 2014-10-27 07:27:17
可能是代碼的HTML呈現部分不知道數據庫中的文本已經被特殊字符轉義;所以它在渲染html之前再次逃脫。 – kums 2014-10-27 10:16:31
IMO這是一個數據庫的問題:Latin-1的字符集支持當前編碼的實體,所以應該不需要任何心理體操轉換''變回相應的字符,以便信息能夠直接在數據庫中查看'撇號等。如果db數據被輸出到某些媒體,某些媒體確實需要編碼 - 例如到需要編碼'<' and '>'的網頁,生成網頁輸出的代碼應該執行此轉換。來自OP的 – 2014-10-27 14:07:31