2012-10-25 31 views
2

我正在使用php解析xml文檔。用PHP解析xml如何處理這些字符

當我看到的結果是在瀏覽器中,我得到了以下特點:

A±,而不是西班牙的n

A的相反,我

á代替

A 3而不是ó

é而不是é

我打算使用str_replace替換每個奇數字符,但不幸的是之前的模式只是偶爾發生,並且通常我有大量奇數字符集:(

xml標題是:

<?xml version="1.0" encoding="iso-8859-1"?> 

但是,如果我將其更改爲UTF-8也根本不會被打印出來..

我simplexml_load_string加載XML作爲字符串(來源於這樣的數據庫)

你能請給我任何身份證件如何解決這個問題?

非常感謝

+0

我正確的理解PHP顯示這些字符好嗎?您的HTML輸出設置爲UTF? –

+0

這意味着UTF-8數據被誤解爲iso-8859-1 ..您需要設置utf-8內容類型標題 – Esailija

+0

在您的瀏覽器中,嘗試更改「View-> Character Encoding」菜單下的字符編碼。一旦你找到正確顯示的那個,在代碼中使用它。 –

回答

2

你有2種選擇:

一)包括在你的PHP文件中的任何輸出前header('Content-Type: text/html; charset=iso-8859-1');

B)的輸出轉換爲UTF-8 $str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1');

兩個應該做的伎倆。

+0

數據已經存在於UTF-8中,被誤解爲iso-8859-1或類似文件。如果你將ISO看作ISO-8859-1,那就是'C3B1',如果你在utf-8中解釋'C3B1',你會得到'ñ'。 – Esailija

+0

是的!是!我愛mb_convert_encoding;) –

0

SimpleXML使用UTF-8編碼來存儲的字符串。您可以使用帶有iso-8859-1的XML文件,但如果要使用此編碼打印XML值,則必須先使用utf8_decode

0

$ string = preg_replace('/ [\ x00- \ x1F \ x80- \ xFF] /','',$ string);

0
// new xml 
$xml = new SimpleXMLElement('new.xml'); 

// Displaying XML in textual form 
echo $xml->asXML();