2010-07-15 115 views
0

我似乎完全無法繞過utf-8字符編碼。在php中解碼html實體

因此,我將數據庫中的內容導出爲utf-8 xml文件。 我輸入的軟件對字符編碼相當嚴格,所以我不能只將所有內容都放入CDATA標籤中。

有一大堆怪異的字符,例如’,—…已經在數據中。

這些不在xml中工作,需要更換(通常只有一個'報價')。

理想情況下,我想解碼所有字符,然後使用htmlspecialchars($ text,ENT_COMPAT,'UTF-8',FALSE)將它們重新編碼回去。但我似乎無法找到解碼它們的函數。有一個嗎? 我已經開始用str_replace()手動遍歷每個實體,但它變得比我預期的要大得多。

任何幫助將是一個救星。 謝謝

回答

2

html_entity_decode()也許?

在某些情況下,在php中的字符轉換問題中,設置語言環境非常重要。無論哪個,例如

setlocale(LC_CTYPE,'en_US.utf8'); 

但我想提醒的是,投資正從開頭的編碼權利,恕不回覆到實體,如果在所有可能的任何時刻,是值得的。

+0

謝謝,我一直在嘗試html_entity_decode()。但即使使用語言環境設置,它仍然不會轉換實體,如ndash 是的,我現在的目標是刪除所有這些愚蠢的字符,因此實體完全需要。不幸的是,我必須處理我提供的數據,而且我似乎遇到了一堵磚牆,以至於我可以如何糾正編碼。我目前唯一可以看到的解決方案是查找和替換。 – Leon 2010-07-16 09:22:00

+0

也許你必須安裝一個語言環境或其他東西,因爲我的Mac(!)它只是在命令行中工作:'mac:〜$ php \ n <?php print html_entity_decode(「–」,ENT_COMPAT,「UTF-8 「); ?> \ n -'(抱歉缺少格式化,\ n =換行符)debian股票lenny:相同。 – mvds 2010-07-16 10:09:30

+0

如果你想一起擺脫它們,使用iconv並從UTF-8轉換爲ASCII // TRANSLIT或ASCII // IGNORE或類似的東西。 – mvds 2010-07-16 10:14:39