我使用DOMDocument操縱/修改HTML之前,它獲得輸出到頁面。這只是一個html片段,而不是一個完整的頁面。我最初的問題是,所有的法國人物都搞砸了,經過一番反覆試驗後,我能夠糾正。現在,似乎只有一個問題仍然存在:「角色變成了? 。DOMDocument編碼問題/字符轉換
代碼:
<?php
$dom = new DOMDocument('1.0','utf-8');
$dom->loadHTML(utf8_decode($row->text));
//Some pretty basic modification here, not even related to text
//reinsert HTML, and make sure to remove DOCTYPE, html and body that get added auto.
$row->text = utf8_encode(preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML())));
?>
我知道它變得凌亂與UTF8解碼/編碼,但這是我可以使它工作至今的唯一途徑。下面是一個簡單的字符串:
輸入: 三世doute parce qu'il vient D'atteindre UNE日期行列式丹斯兒子spectaculaire cheminement
輸出:?? 三世doute parce曲IL vient d atteindre UNE日期d&eacute ;如果我找到更多的細節,我會添加它們。感謝您的時間和支持!
什麼字符集是'$ row-> text'?如果它是直接使用UTF-8(假設它來自MySQL,則需要將連接字符集設置爲UTF8),那麼您不需要'utf8_(en | de)代碼函數。強制將字符集轉換爲UTF8,並且所有問題*應該消失(假設這是'$ row'的來源)... – ircmaxell 2010-08-19 15:35:16
輸入來自CMS,全部設置爲utf8(字符串,數據庫等等)。 但似乎我的問題不是我認爲的那樣。我發現從我身上傳來的字符串都沒問題,還有我的同事的電腦。只有當我的客戶端電腦輸入字符串時纔會出現問題。我敢打賭,她正在從文字或其他任何東西上粘貼文本,然後發生一些奇怪的事情。我將不得不深究這一點。 – Kyrotomia 2010-08-19 15:43:31
Ahhh ...然後可能檢查UCS-2LE(UTF-16LE)字符(因爲這是Word IIRC的默認設置)... – ircmaxell 2010-08-19 15:45:23