在 PHP 中,處理 Emoji 數(shù)據(jù)主要涉及到存儲和傳輸
使用 UTF-8 編碼:確保你的 PHP 腳本文件以及與之交互的任何數(shù)據(jù)庫或其他數(shù)據(jù)源都使用 UTF-8 編碼。這將確保 Emoji 字符被正確處理。
數(shù)據(jù)庫存儲:使用支持 UTF-8 編碼的數(shù)據(jù)庫(如 MySQL)并設(shè)置相應(yīng)的字符集。例如,在創(chuàng)建 MySQL 數(shù)據(jù)表時,可以設(shè)置默認(rèn)字符集為 utf8mb4,以支持包括 Emoji 在內(nèi)的 4 字節(jié) UTF-8 字符:
CREATE TABLE `messages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`content` text COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
$mysqli->set_charset("utf8mb4");
header("Content-Type: text/html; charset=utf-8");
htmlspecialchars()
函數(shù)對特殊字符進(jìn)行轉(zhuǎn)義,以防止跨站腳本攻擊(XSS)。然后,在將數(shù)據(jù)存儲到數(shù)據(jù)庫之前,使用 mb_convert_encoding()
函數(shù)確保數(shù)據(jù)是 UTF-8 編碼的:$input = htmlspecialchars($_POST['input'], ENT_QUOTES, 'UTF-8');
$encoded_input = mb_convert_encoding($input, "UTF-8", "auto");
htmlspecialchars()
函數(shù)對特殊字符進(jìn)行轉(zhuǎn)義。這樣可以確保 Emoji 字符在瀏覽器中正確顯示。通過遵循上述建議,你應(yīng)該能夠在 PHP 中成功地存儲和傳輸 Emoji 數(shù)據(jù)。