在項目中,我目前使用htmlentities()
過濾數據來自數據庫:如何使用PHP htmlentities()?
echo htmlentities($variable_name);
我在美國,這個工作正常,我。我的朋友在巴西,對他而言,一些文字不能正確顯示。
我該如何使用htmlentities()
以使其正確國際化?
在項目中,我目前使用htmlentities()
過濾數據來自數據庫:如何使用PHP htmlentities()?
echo htmlentities($variable_name);
我在美國,這個工作正常,我。我的朋友在巴西,對他而言,一些文字不能正確顯示。
我該如何使用htmlentities()
以使其正確國際化?
問題可能是輸出不以UTF-8編碼。根據the php docs for htmlentities,功能
有一個可選的第三個參數 字符集定義的字符集在轉換中使用 。目前, ISO-8859-1字符集被用作 的默認值。
所以,你可以嘗試調用
htmlentities($string, ENT_COMPAT, 'UTF-8');
代替,這可能會解決問題,因爲它不是默認的字符編碼。
謝謝!我會試試這個。 – usnidorg
@usnidorg你可以請嘗試簡單地在頭部添加,而不是將其他參數傳遞給htmlentities並檢查if這樣可行 –
雖然我懷疑Keoki是否正確,但另一個可能的問題可能是字體。如果在朋友的字體不包含該字符的情況下使用特殊字符,他們只會看到缺少的字符符號。在網頁或任何您用來發布角色的媒體中,請確保已設置字體,因爲默認字體沒有保證。
如果這兩種情況都不是這樣,那麼沒有出現的示例字符是什麼?你能發佈你正在使用的完整代碼嗎?
您也可以嘗試的iconv將字符串轉換爲所需的字符編碼
凱基說什麼。另外,由於你通常使用它很多,所以編寫一個包裝函數是非常明智的 - 'html()'和'h()'是很常見的。使用'htmlspecialchars()'會避免charset問題,並遵從舊的xhtml語法。 (但更好地使用字符集參數的可靠性)。 – mario