我有一個textarea的窗體。用戶輸入存儲在數據庫中的文本塊。如何將字符串中的智能引號和電子郵件轉換爲字符串?
有時,用戶將從包含智能引號或emdashes的Word中粘貼文本。這些字符出現在數據庫爲:a€「’,“,â€
我應該輸入字符串調用什麼功能智能引號轉換爲常規報價和emdashes定期破折號?
我正在使用PHP。
更新:感謝所有迄今爲止的出色答覆。在Joel的有關編碼網站的頁面是非常豐富:http://www.joelonsoftware.com/articles/Unicode.html
在我的環境中的一些注意事項:
MySQL數據庫使用UTF-8編碼。同樣,顯示內容的HTML頁面通過明確設置元內容類型使用UTF-8(更新:)。
在這些頁面上,智能引號和emdashes顯示爲帶有問號的菱形。
解決方案:
再次感謝您的回覆。該解決方案是雙重的:
- 確保數據庫和HTML文件 被明確設置爲使用 UTF-8編碼。使用
htmlspecialchars()
代替htmlentities()
。
這似乎是這樣一個完美的「快速修復」,但遺憾的是它增加了*更多*無效字符使得我的測試用例顯着變差。 – 2009-02-27 21:08:19
如果您知道輸入字符集是拉丁語1,則只能從拉丁語1轉換爲UTF-8。但是,如果輸入字符已經是UTF-8,則只能通過將其從拉丁語1「翻譯」到UTF-8的第二次。 – 2011-02-08 21:17:04