我知道我需要在所有的情況下逃脫這些:如果我的XML文檔指令指定了UTF-8的編碼,我還需要轉義字符嗎?
quot "
amp &
apos '
lt <
gt >
但是,我們有重音國際字符,或俄語字符來命名一對夫婦。當我的編碼指令設置爲UTF-8時,是否需要轉義此類型的字符?
如果我將編碼指令設置爲ASCII?我是否需要逃避所有這些角色?
這是XML的一個樣本(從舊系統),我試圖重現使用引入nokogiri(lib2xml):
<?xml version="1.0" encoding="UTF-8"?>
<DESCRIPTION lang="rus">
<SHORT_DESCRIPTION>МОДУЛЬ- ELECTRONIC OUTPUT 120 V DC 5 mA</SHORT_DESCRIPTION>
<LONG_DESCRIPTION>МОДУЛЬ- ТИП ELECTRONIC OUTPUT ВХОД 120 V DC ВЫХОД 5 mA ИСТОЧНИК ПИТАНИЯ 120 V DC ДОПОЛНИТЕЛЬНАЯ ДЕТАЛЬ 1 ANALOG SM322-8S TOR</LONG_DESCRIPTION>
</DESCRIPTION>
你可以看到,樣品中的說明書上說UTF-8,但他們已經逃脫了很多字符,當我指定ASCII編碼指令時,Nokogiri只能轉義字符。這讓我感到困惑。
編輯2:如果我沒有傳遞一個編碼指令給Nokogiri,生成的XML會將所有俄文字符留在他們的本地西裏爾字母表中,但這不符合我需要複製的XML。
不,你不知道。但要確保你實際上將文件編碼爲UTF-8 ...只是簡單地使用encoding =「UTF-8」屬性並不能實現。 – Esailija
Esailija說得很好。這裏有兩件事 - 聲明的編碼,它告訴解析器文檔編碼,以及用於將字符數據寫入編碼的八位字節的編碼。它們必須匹配或解析器使用錯誤的解析器,並在讀取數據時破壞數據。 – McDowell
我添加了一個示例pf我需要複製的xml,它表示在說明中編碼UTF-8,但轉義字符不應該因爲它們是有效的UTF-8而被轉義。 – holaSenor