MySQL數據庫返回utf8
編碼文本。基本上,我用PDO
屬性MYSQL_ATTR_INIT_COMMAND
並通過:php-utf8對文本進行兩次編碼。它會有什麼負面影響?
SET CHARACTER SET utf8
它返回utf8
編碼的文本。但是數據庫中的一些文本是純文本utf8
,像&alum;
這樣的東西是按原樣返回的。
所以我需要在php中再次撥打utf8_encode
來獲得實際的utf8
char。它的工作正常。
我想知道,如果它會對編碼文本兩次產生任何負面影響,或者它不會影響除編碼上述非編碼文本之外的其他任何內容?
謝謝!
編輯:
我使用下面的代碼可以得到正確的字符:
$val = utf8_encode(addslashes(html_entity_decode(strip_tags($val))));
所以它的作用是從轉換以下文字:
<font color=\"#222222\" face=\"arial, sans-serif\" size=\"2\"> Test Event </font><span style=\"color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;\">Persönlichkeit Universität"</span>
(本文來自數據庫,在調用SET CHARACTER SET utf8
)
到:
Test Event Persönlichkeit Universität\"
我不明白你的問題的話。出於某種原因,大家似乎認爲'utf8_encode()'是一個神奇的函數,它可以自動修復任何編碼問題。它不是,只是從ISO-8859-1轉換爲UTF-8。'&alum;'是一個HTML實體。所有這些字符(&-a-l-u-m;)在ISO-8859-1和UTF-8中都是一樣的,所以'utf8_encode()'什麼都不做。哪一個沒有那麼糟 - 在其他情況下,它只會破壞你的數據。 –
這就是對的。我想我需要在那裏更詳細。我要編輯問題 –
不。我只是想知道是否會對utf8編碼文本兩次產生任何負面影響。乾淨利落。 –