背景:我有一個使用tinymce編輯HTML的網站。非破壞性空間和&x22C4;等HTML實體正在通過tinymce轉換爲UTF-8字符,即使我正在使用entity_encoding:「named」選項。然後我將它存儲在UTF-8的MySQL表中。當稍後檢索相同的HTML進行重新編輯時,多字節字符將通過tinymce分隔成單獨的字符。 Tinymce已經驗證了這是一個錯誤。tinymce的解決方法utf8 bug
現在的問題是:如何在不破壞HTML的情況下將所有多字節UTF-8字符轉換爲HTML實體?
我試圖在PHP下,但多字節UTF-8字符只是刪除:
$encoded_string = htmlentities($utf_string, ENT_HTML5, 'UTF-8', false);
$html_ent_conv = htmlspecialchars_decode ($encoded_string , ENT_COMPAT | ENT_HTML5);
我也試過mb_encode_numericentity,但我想不出我應該用什麼爲convmap參數。
更新:我有PHP 5.3.17,它不支持ENT_HTML5,所以我刪除它。現在它適用於非破壞性空間,但不適用於其他多字節UTF-8字符。