我正在研究如何處理頁面集字符集之外的字符。瀏覽器/ PHP如何處理設置字符集外的字符?
在這種情況下,頁面被設置爲iso-8859-1,並且前面的程序員決定使用htmlentities($ string,ENT_COMPAT)轉義輸入。然後將其存儲到Mysql的Latin1表中。
由於表設置爲與頁面相同的字符集,我想知道是否需要該步驟。 我在http://floris.workingweb.nl/experiments/characters.php上做了一些實驗,看起來對於拉丁文1裏面的東西來說,有些字符是逃脫的,但是例如有一個捷克名字他們沒有。
這是因爲那些字符在Latin1之外?如果是這樣,那麼可以刪除這些特性,因爲它對拉丁文1以外的內容無幫助,並且對於拉丁文內部1,現在我不能看到它了......
謝謝,這就是我一直在尋找的東西。至於其他評論,我知道utf-8,但這是爲了以後,現在我需要解決手頭上擺脫數據庫中逃脫的東西的問題,我需要知道我是否在正確的軌道上 – Maarten 2010-03-30 14:00:35
是的,數據庫中的HTML編碼數據是一種巨大的代碼異味。在將文本放入HTML頁面時應該調用htmlspecialchars,而不是與數據層有關。擺脫! – bobince 2010-03-30 14:05:17
@Maarten:不要忘記您的數據仍然需要轉義(請參閱答案更新)。爲安全起見,應使用htmlspecialchars代替 – user187291 2010-03-30 14:19:35