前同天和同事在討論xml裡的encoding屬性和檔案格式的關係,終於徹底的弄清楚了。
以前理解的是,xml裡的encoding裡定義必須與檔案格式相符。即有這樣的xml Introduction xml encoding="utf-8" .. ?>,那麼,文件格式必須是一個utf-8文件,即文件的前兩個字節要是一個utf-8頭FF FE 。 (後來才弄清楚,FF FE不是utf-8的BOM。。就是說我的錯誤理解持續了相當長一段時間。。)
下面把討論的幾個階段大概說一下。
剛開始討論時,我很肯定的告訴他,encoding的值必須和文件格式(即BOM,BOM就是byte order mark的縮寫)相匹配,不然在解析XML時,可能會出現(比如文檔含有某個UNICODE字符,而encoding或BOM指定的格式不匹配,就會出錯,當時我是這樣的意思),然後他又告訴我,好像不是這樣,我用DELPHI創建的XML文件,沒有BOM,XML裡面有中文內容,encoding裡指定的是UTF-8,用IE可以正常打開啊。
他在發現他所建立的XML檔案沒有BOM時,有個有趣的地方,就是用UE開啟這類含有UNICODE字元的檔案時,UE會自動在檔案前面加上FF FE,使得檔案可以正常顯示,所以原本沒有BOM的文件,在UE下的十六進制下瀏覽,會看到多了個BOM,這個功能可以在UE的OPTIONS裡去掉的,想知道的可以自己去找找。
然後我有點大頭了,怎麼會這樣呢,然後想啊想,突然他發了一封訊息過來,內容如下:
W3C定義了三個XML解析器如何正確讀取XML檔案的編碼的規則:
1,如果文字封鎖有BOM(位元組順序標記,一般來說,如果儲存為unicode格式,則包含BOM,ANSI則無) ,就定義了檔案編碼
2,如果沒有BOM,就查看XML宣告的編碼屬性
3,如果上述兩個都沒有,就假定XML文擋採用UTF-8編碼
#有了這三條規則,那這個規則就清楚多了。
首先,XML解析器根據檔案的BOM來解析檔案;如果沒找到BOM,由用XML裡的encoding屬性指定的編碼;如果xml裡encoding沒指定的話,就預設用utf-8來解析文檔。然後又可以推出,BOM和ENCODING都有的話,則以BOM指定的為準。
啊!突然覺得有標準文件多好!雖然是那麼的理所當然。
至此,終於把xml裡的encoding和檔案格式的關係搞懂了。雖然這篇紀錄只有那幾百個字內容,但是我們當時在討論的時候,總時間差不多花了2個小時。 #
以上是關於xml裡的encoding的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

XML在RSSFeed中的作用是結構化數據、標準化和提供可擴展性。 1.XML使得RSSFeed的數據結構化,便於解析和處理。 2.XML提供了一種標準化的方式來定義RSSFeed的格式。 3.XML的可擴展性使得RSSFeed可以根據需要添加新的標籤和屬性。

處理XML和RSS數據時,可以通過以下步驟優化性能:1)使用高效的解析器如lxml提升解析速度;2)採用SAX解析器減少內存使用;3)利用XPath表達式提高數據提取效率;4)實施多進程並行處理提升處理速度。

RSS2.0是一種開放標準,允許內容髮布者以結構化的方式分發內容。它包含了豐富的元數據,如標題、鏈接、描述、發布日期等,使得訂閱者能夠快速瀏覽和訪問內容。 RSS2.0的優勢在於其簡潔和擴展性。例如,它允許自定義元素,這意味著開發者可以根據需求添加額外的信息,如作者、分類等。

RSS是一種基於XML的格式,用於發布經常更新的內容。 1.RSSfeed通過XML結構化組織信息,包括標題、鏈接、描述等。 2.創建RSSfeed需按照XML結構編寫,添加元數據如語言和發布日期。 3.高級用法可包含多媒體文件和分類信息。 4.調試時使用XML驗證工具,確保必需元素存在且編碼正確。 5.優化RSSfeed可通過分頁、緩存和保持結構簡潔來實現。通過理解和應用這些知識,可以有效管理和分發內容。

RSS是一種基於XML的格式,用於發布和訂閱內容。 RSS文件的XML結構包括根元素、元素和多個元素,每個代表一個內容條目。通過XML解析器讀取和解析RSS文件,用戶可以訂閱並獲取最新內容。

XML在RSS中具有結構化數據、可擴展性、跨平台兼容性和解析驗證的優勢。 1)結構化數據確保內容的一致性和可靠性;2)可擴展性允許添加自定義標籤以適應內容需求;3)跨平台兼容性使其在不同設備上無縫工作;4)解析和驗證工具確保Feed的質量和完整性。

RSS在XML中的實現方式是通過結構化的XML格式來組織內容。 1)RSS使用XML作為數據交換格式,包含頻道信息和項目列表等元素。 2)生成RSS文件需按規範組織內容,發佈到服務器供訂閱。 3)RSS文件可通過閱讀器或插件訂閱,實現內容自動更新。

RSS的高級功能包括內容命名空間、擴展模塊和條件訂閱。 1)內容命名空間擴展RSS功能,2)擴展模塊如DublinCore或iTunes添加元數據,3)條件訂閱根據特定條件篩選條目。這些功能通過添加XML元素和屬性實現,提升信息獲取效率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

記事本++7.3.1
好用且免費的程式碼編輯器